Open iis 上的底层提供程序失败

Usf*_*oor 3 c# asp.net-mvc entity-framework asp.net-web-api

我正在使用 asp.net web api,当我在内置服务器的 micro soft Visual Studio 上运行我的项目时,一切正常,但是当我将它托管在本地 iis 服务器上时,出现以下错误

底层提供者在 Open 上失败

我正在使用实体框架,我在 web.config 中的连接字符串是

<add name="Entities" connectionString="metadata=res://*/Models.School.csdl|res://*/Models.School.ssdl|res://*/Models.School.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sqlexpress;initial catalog=DBName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)

Dis*_*nky 5

根据该连接字符串,尝试连接到您的 SQL 实例的身份是在您的应用程序的 IIS 应用程序池(通常为iis apppool\defaultapppool)中指定的用户帐户。你要么需要;

  • 允许此帐户访问 SQL 数据库
  • 将 SQL 帐户的必要凭据放入连接字符串
  • 在应用程序池上设置 Windows 帐户详细信息,以便应用程序连接。

发生的情况是,当您进行调试时,用于连接的帐户Integrated Security=True是当前登录的用户帐户 - 这可能设置为允许您连接到数据库,特别是如果您在设置期间安装了 SQL Server您的机器(这是添加当前用户的默认 SQL Server 安装配置)。但是 IIS 需要一个特定的帐户来运行,该帐户不是当前登录的用户 - 因此需要上述选项。