我一直在尝试使用 MVC 模板通过本地 SQL 数据库文件进行身份验证来部署原始 ASP .NET Web 应用程序。到目前为止,我能够让它在我的计算机上运行。当我将其发布到远程服务器上的文件夹时,我似乎无法弄清楚如何配置 IIS 10 以从保存到其 App_Data 子目录中的本地 SQL 数据库文件中读取。结果我收到以下错误:
SQL 网络接口错误 52 - 无法找到本地数据库运行时安装。请验证 SQL Server Express 是否已正确安装,以及本地数据库运行时功能是否已启用。
我尝试通过在远程服务器上安装 SQL Server 2012 Express 来修复该问题,但问题仍然存在。所以我认为问题可能来自连接字符串:
数据源=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-WebApplication1-20180923034052.mdf;初始目录=aspnet-WebApplication1-20180923034052;集成安全性=True”providerName="System.Data.SqlClient
以上是我电脑上的内容。由于我在远程服务器上将 SQL 服务器配置为默认服务器,因此我认为我应该匹配 SQL 服务器数据库引擎的名称,默认情况下该名称为 MSSQLSERVER,如下所示。但它也没有起作用。
数据源=.\MSSQLSERVER;AttachDbFilename=|DataDirectory|\aspnet-WebApplication1-20180923034052.mdf;初始目录=aspnet-WebApplication1-20180923034052;集成安全性=True”providerName="System.Data.SqlClient
我缺少什么配置才能使这个简单的 ASP .NET Web 应用程序运行?
答案1
为了使项目创建的默认连接字符串正常工作,您需要安装SQL 服务器本地数据库在远程服务器上。这是一个与主安装不同的安装。以下是关联到你可以下载的地方Microsoft SQL 服务器 2012 LocalDB。
之后,设置项目发布的目录以使用本地系统作为其应用程序池IIS 管理器. 按照参考操作这里:
- 点击应用程序池在IIS 管理器。
- 点击添加应用程序池...创建新的应用程序池。使用您想要的任何设置和名称。
- 选择新的应用程序池后,单击高级设置...并改变身份到本地系统点击...。它位于下拉菜单中内置帐户。
- 点击好的保存并关闭所有弹出窗口并返回至IIS 管理器。
- 选择项目发布到的目录并点击高级设置...。
- 改变应用程序池到新创建的应用程序池并单击好的完成。
请注意,保留应用程序池运行为本地系统正如解释的那样这里,但这对于测试目的来说已经足够了。
答案2
我所做的是将 appool 作为用户添加到 SQL Server。即,在 SQL Server 级别,转到安全性。添加新登录名。将 IIS APPPOOL\APPPOOLNAME 添加为用户。不要检查用户或执行任何操作。接受默认值并将 appool 用户添加到 SQL Server。授予此用户对数据库的读/写权限,就这样。 MSDN BLOG 参考