【问题标题】:Database connection issue when deploy on IIS在 IIS 上部署时的数据库连接问题
【发布时间】:2011-05-18 07:07:24
【问题描述】:

我已经配置了 2 个连接字符串:

  <connectionStrings>
    <add name="ApplicationServices" connectionString="Data Source=.\SQLInstance;Initial Catalog=App;Integrated Security=True" providerName="System.Data.SqlClient"/>
    <add name="AppEntities" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLInstance;Initial Catalog=App;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/>
</connectionStrings>

从 VS 启动时项目运行良好。但部署在 IIS 上,尝试获取实体时出现“不支持数据源关键字”。成员资格(因此 ApplicationServices 连接)有效。

有人可以帮我解决这个问题吗?

编辑:如果我们使用应用程序或网站,问题是一样的

【问题讨论】:

  • 你确定你在 EF 中使用的是第二个连接字符串而不是第一个?
  • 是的,否则它不会在 Visual Studio 上工作,不是吗?
  • 尝试删除第一个连接字符串,并检查Visual Studio和IIS中会发生什么
  • 没什么用。 EF 使用良好的连接字符串: public AppEntities() : base("name=AppEntities", "AppEntities") { this.ContextOptions.LazyLoadingEnabled = true; OnContextCreated(); }

标签: c# sql-server entity-framework iis


【解决方案1】:

我终于找到了解决办法。 连接字符串不是从 IIS 配置中读取的,而是从 web.config 中读取的。

当创建部署包时,VS 对 web.config 做了一些魔术,因为它从 web.release.config 中读取。 检查生成的配置文件时,我说“已被替换为”。

所以生成的连接字符串是无效的,我们应该手动替换 & 为 &。

谢谢你的帮助

【讨论】:

    【解决方案2】:

    你必须在服务器上安装.NET framework 3.5/4.0,然后设置你的web应用程序使用它,然后IIS应该能够识别Entity Framework连接字符串

    编辑:

    【讨论】:

    • .Net 框架已安装。我们已经在服务器上安装了 Visual Studio(用于测试的虚拟机)。使用 vs (build & run) 运行时,一切都很好。从 IIS 运行时(部署后感谢 vs),可以登录。但无法检索数据:我们收到错误。
    • 我假设您在 IIS 6.x 上使用 .NET 4.0。正如我所说,您必须配置 IIS 以允许您的 Web 应用程序使用正确的版本。右键单击 IIS 中的 Web 应用程序,选择属性,在 ASP.NET 选项卡中,将版本设置为 .NET 4.0 :)。这应该工作
    • 我们使用带有 .NET 3.5.1 的 II 7。应用程序池在 v4 中运行
    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 2018-04-11
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多