代码之家  ›  专栏  ›  技术社区  ›  jorjj

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

  •  0
  • jorjj  · 技术社区  · 6 年前

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

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

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

    我还将此连接字符串用于IIS: enter image description here

    1 回复  |  直到 6 年前
        1
  •  2
  •   Anuraj    6 年前

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

    简单的修复方法是使用SQL Server Express而不是LocalDB

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