0

我刚刚将我的 Blazor CRUD 示例发布到本地服务器。网站运行良好,但是当我转到获取数据页面时收到 HTTP 错误 500。当我在 Visual Studio 上运行时,一切正常,但在 IIS 服务器上运行。我在上下文文件中有连接字符串。我还在应用程序池设置页面上编辑了连接字符串,但仍然无法正常工作。

这是我在上下文文件中使用的代码片段:

        optionsBuilder.UseSqlServer(@"Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=master;Trusted_Connection=True;");

我也将此连接字符串用于 IIS: 在此处输入图像描述

4

1 回答 1

2

答案是这里有两个不同的 LocalDB 实例。与作为 Windows 服务运行的 SQL Server Express 实例不同,LocalDB 实例作为用户进程运行。当不同的 Windows 用户连接到 LocalDB 时,他们最终会为每个用户启动不同的 LocalDB 进程。当我们从 Visual Studio 连接到 (localdb)\v11.0 时,会为我们启动一个 LocalDB 实例并作为我们的 Windows 帐户运行。但是,当在 IIS 中作为 ApplicationPoolIdentity 运行的 Web 应用程序连接到 LocalDB 时,会为其启动另一个 LocalDB 实例并作为 ApplicationPoolIdentity 运行!实际上,即使 Visual Studio 和 Web 应用程序都使用相同的 LocalDB 连接字符串,它们也会连接到不同的 LocalDB 实例。

简单的解决方法是使用 SQL Server Express 而不是 LocalDB

更多细节 - https://blogs.msdn.microsoft.com/sqlexpress/2011/12/08/using-localdb-with-full-iis-part-2-instance-ownership/

于 2018-08-10T02:58:12.857 回答