如何允许IIS从ASP.NETMVC项目使用本地数据库?

jdg4fx2g  于 2023-08-08  发布在  .NET
关注(0)|答案(5)|浏览(135)

我将在本地网络上演示一个ASP.NETMVC网站。此应用程序与数据库有连接:

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-EBC-20141127093222.mdf;Initial Catalog=aspnet-EBC-20141127093222;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

字符串

**我想如果这个数据库可以使用IIS和每当我在本地运行我的应用程序。**我做了一个网站上的IIS -它是运行.NET v4。我的项目位于c:\inetpub\www\ebc。我可以发布网站,但在查看页面时收到此错误:

“建立到SQL Server的连接时发生了与网络相关的或特定于示例的错误。找不到服务器或无法访问。请验证示例名称是否正确,以及SQL Server是否配置为允许远程连接。(provider:SQL Network Interfaces,错误:50 -发生本地数据库运行时错误。LocalDB示例API方法调用内部发生意外错误。有关错误详细信息,请参阅Windows应用程序事件日志。”
我知道我需要允许通过microsoft sql server管理器远程连接到sql server?有没有办法在别的地方做?

0x6upsns

0x6upsns1#

当计算机中安装了多个版本的SQL Server localDB时,此错误非常常见。
尝试使用(localdb)\mssqllocaldb作为连接到LocalDB自动示例的公共服务器名称,而不是“v11.0”或“v12.0”。
上面的自动localdb示例,在所有版本中都有一个默认名称,避免了名称和版本之间的冲突。

重要提示:当更新localdb到新版本时,请记住使用旧版本创建的数据库不能与新版本一起使用。

zrfyljdw

zrfyljdw2#

我是这样解决的:
首先以管理员身份使用Developer PowerShell或Visual Studio的Developer Command Prompt,并确认您只有一个LocalDb示例。
键入sqllocaldb info查看LocalDb示例。


的数据
然后,我按照这篇文章,并将应用程序池标识设置为我当前登录的用户,credit:https://stackoverflow.com/a/38294458/3850405
https://learn.microsoft.com/en-us/archive/blogs/sqlexpress/using-localdb-with-full-iis-part-1-user-profile
在那里,我发现对于应用程序池,将Load User Profile设置为true是不够的,还需要将通常位于C:\Windows\System32\inetsrv\configapplicationHost.config中的setProfileEnvironment设置为true。使用此配置,它工作:



原文回答:
https://stackoverflow.com/a/62810876/3850405

mitkmikd

mitkmikd3#

请看这篇文章:这两篇关于在完整的IIS中使用LocalDB的文章应该会给予你更多的信息。尤其是第二部分似乎相关,但第一部分也包含一些背景。

  1. Part 1: User Profile
  2. Part 2: Instance Ownership
    信用:IIS connecting to LocalDB
z9ju0rcb

z9ju0rcb4#

1.以管理员身份运行记事本应用程序并导航到文件夹C:\Windows\System32\inetsrv\config。打开文件applicationHost.config,搜索“setProfileEnvironment”并将其值设置为“true”。保存并退出记事本。
1.以管理员身份运行命令提示符应用程序,并执行以下命令:SQLLOCALDB SHARE MSSQLLocalDB IIS_MSSQLLocalDB
1.将连接字符串中的“数据源”值更改为(localDb).\IIS_MSSQLLocalDB。
1.在LocalDB上执行以下sql命令:

  • CREATE LOGIN [IIS APPPool{app pool name}] FROM WINDOWS;
  • EXEC sp_addsrvrolememember N'IIS APPPool{app pool name}',SYSAADMIN

@AnotherGeek在这个非常线程上。- 谢谢-谢谢

xdyibdwo

xdyibdwo5#

最好的解决方案是使用SQL表达式,但如果您不想这样做,您必须执行几个步骤才能使您的mvc应用程序与localdb一起工作
1.以管理员身份打开Visual studio命令提示符
1.执行sqllocaldb share v11.0 IIS_DB(然后数据库将被共享,IIS可以访问它)
1.将站点连接字符串更改为指向DB的共享示例:Data Source=(LocalDb)\.\IIS_DB然后再次发布
请注意,在这一点上,您可能会收到一个访问拒绝错误,并且有如何修复它
1.转到VisualStudio => DatabaseExplorer =>添加连接
1.对于服务器名称,输入(LocalDb)\.\IIS_DB,然后右键单击连接并选择new query并执行此命令

create login [IIS APPPool\DefaultAPPPool] from windows;
exec sp_addsrvrolemember N'IIS APPPool\DefaultAPPPool, sysadmin

字符串

相关问题