Blazor CRUD 示例:IIS 服务器上的请求的 HTTP 错误 500

Blazor CRUD Sample: HTTP Error 500 for the request on IIS Server

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

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

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

我也将这个连接字符串用于 IIS:

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

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

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