如何允许 IIS 使用 ASP.NET MVC 项目中的本地数据库?
Posted
技术标签:
【中文标题】如何允许 IIS 使用 ASP.NET MVC 项目中的本地数据库?【英文标题】:How to allow IIS to use local database from ASP.NET MVC project? 【发布时间】:2014-12-05 21:27:44 【问题描述】:我将在本地网络上演示一个 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?有没有办法在其他地方做?
【问题讨论】:
【参考方案1】:最好的解决方案是使用 SQL 表达式,但如果您不希望有几个步骤可以让您的 mvc 应用程序与 localdb 一起工作
-
以管理员身份打开 Visual Studio 命令提示符
执行
sqllocaldb share v11.0 IIS_DB
(然后共享数据库,IIS可以访问)
更改站点连接字符串以指向 DB 的共享实例:Data Source=(LocalDb)\.\IIS_DB
然后再次发布
请注意,此时您可能会收到访问拒绝错误,并且有解决方法
-
转到 Visual Studio => 数据库浏览器 => 添加连接
对于服务器名称输入(LocalDb)\.\IIS_DB
然后右键单击连接并选择新查询并执行此命令
create login [IIS APPPool\DefaultAPPPool] from windows;
exec sp_addsrvrolemember N'IIS APPPool\DefaultAPPPool, sysadmin
【讨论】:
【参考方案2】:当一台机器上安装了多个版本的SQL Server localDB时,这个错误很常见。
尝试使用(localdb)\mssqllocaldb
作为连接LocalDB自动实例的通用服务器名称,而不是“v11.0”或“v12.0”。
上面的自动localdb实例,所有版本都有一个默认名称,避免名称和版本冲突。
重要提示:将 localdb 更新到新版本时,请记住使用旧版本创建的数据库不适用于新版本。
【讨论】:
【参考方案3】:我是这样解决的:
首先以管理员身份使用 Visual Studio 的开发人员 PowerShell 或开发人员命令提示符,并确认您只有一个 LocalDb 实例。
键入 sqllocaldb info
以查看您的 LocalDb 实例。
然后我按照这篇文章将应用程序池标识设置为我当前登录的用户,信用:https://***.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 是不够的,您还需要在applicationHost.config
通常位于C:\Windows\System32\inetsrv\config
中将setProfileEnvironment
设置为true。有了这个配置,它就可以工作了:
原答案:
https://***.com/a/62810876/3850405
【讨论】:
【参考方案4】:看到这个帖子: 这两篇关于将 LocalDB 与完整 IIS 结合使用的文章应该为您提供更多信息。尤其是第二部分似乎相关,但第一部分也包含一些上下文。
-
Part 1: User Profile
Part 2: Instance Ownership
信用:IIS connecting to LocalDB
【讨论】:
以上是关于如何允许 IIS 使用 ASP.NET MVC 项目中的本地数据库?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ASP.NET Core RC2 MVC6 和 IIS7 获取当前 Windows 用户
如何确保使用 ASP.NET MVC5 和 IIS 7.5 express 刷新 CSS 文件
如何使用 localDB 将 ASP.NET MVC 4 应用程序部署到 Windows 7 上的本地 IIS?
asp.net mvc3发布(部署)问题。vs2012发布项目缺少文件夹、发布后部署在iis7上网站无法运行
如何使用 .Net 4.0 中包含的 HttpClient 类将文件上传到在 IIS Express 中运行的 Asp.Net MVC 4.0 操作