c# - 底层提供程序在 Open iis 上失败

标签 c# asp.net-mvc entity-framework asp.net-web-api

<分区>

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

底层提供者打开失败

我正在使用 Entity Framework ,我在 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" />

最佳答案

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

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

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

关于c# - 底层提供程序在 Open iis 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46604014/

相关文章:

c# - form.dispose() 总是调用验证事件并显示弹出消息

asp.net - MVC 3——在 foreach 循环内,避免重复的 html

jquery - 访问 razor 内的 javascript 变量

c# - Entity Framework - 数据库映射以获取最新条目

entity-framework - Entity Framework 4 ObjectContext 生命周期

javascript - 在 Angular 切换开关上停止传播

c# - 如何在 C#/Silverlight 中实现带通滤波器

entity-framework - 带有 Entity Framework 的 ASP Web API Controller 非常缓慢和奇怪的结果

c# 拆分字符串并删除空字符串

asp.net-mvc - 将业务逻辑应用于 ASP.NET MVC 中的表单元素