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

时间:2014-12-05 21:27:45

标签: c# sql asp.net asp.net-mvc iis

我将在本地网络上演示ASP.NET MVC网站。此应用程序与数据库建立连接:

<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是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误。在LocalDB实例API方法调用中发生意外错误。请参阅Windows应用程序事件日志以获取错误详细信息。“

我知道我需要允许通过microsoft sql server manager远程连接到sql server?有没有办法在其他地方做到这一点?

4 个答案:

答案 0 :(得分:8)

最佳解决方案是使用SQL Expression,但如果您不想要使用mvc应用程序使用localdb,则必须执行几个步骤

  1. 以管理员身份打开Visual Studio命令提示符
  2. 执行sqllocaldb share v11.0 IIS_DB(然后数据库将被共享,IIS可以访问它)
  3. 更改站点连接字符串以指向DB的共享实例:Data Source=(LocalDb)\.\IIS_DB然后再次发布
  4. 请注意,此时您可能会收到访问拒绝错误,并且有解决方法

    1. 转到visual studio =&gt; databaseexplorer =&gt;添加连接
    2. 对于服务器名称,输入(LocalDb)\.\IIS_DB,然后右键单击连接并选择新查询并执行此命令

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

答案 1 :(得分:3)

如果计算机中安装了多个版本的SQL Server localDB,则此错误非常常见。

尝试使用(localdb)\mssqllocaldb作为通用服务器名称连接到LocalDB自动实例,而不是“v11.0”或“v12.0”。

上面的自动localdb实例,在所有版本中都有一个默认名称,避免名称和版本之间发生冲突。版本

重要:将localdb更新为新版本时,请记住使用旧版本创建的数据库不适用于较新版本。

答案 2 :(得分:1)

我这样解决了:

首先使用Visual Studio的Developer PowerShell或Developer Command Prompt作为管理员,并确认您只有LocalDb的一个实例。

键入sqllocaldb info以查看您的LocalDb实例。

enter image description here

然后我关注了这篇文章,并将“应用程序池标识”设置为我当前登录的用户,信用:https://stackoverflow.com/a/38294458/3850405

https://docs.microsoft.com/en-us/archive/blogs/sqlexpress/using-localdb-with-full-iis-part-1-user-profile

我发现在其中将应用程序池的Load User Profile设置为true是不够的,还需要在通常位于{{的setProfileEnvironment中的applicationHost.config中将C:\Windows\System32\inetsrv\config设置为true。 1}}。通过这种配置,它可以正常工作:

enter image description here

原始答案:

https://stackoverflow.com/a/62810876/3850405

答案 3 :(得分:0)

看这篇文章: 使用LocalDB和完整IIS的这两篇帖子应该会为您提供更多信息。特别是第二部分看似相关,但第一部分也包含一些背景。

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