升级到 .NET 4.5 和 EF5。不再能够部署 WCF 服务。

Posted

技术标签:

【中文标题】升级到 .NET 4.5 和 EF5。不再能够部署 WCF 服务。【英文标题】:Upgraded to .NET 4.5 and EF5. No longer able to deploy WCF Service. 【发布时间】:2014-03-20 08:37:27 【问题描述】:

我们有一个 wcf 服务,它作为应用程序在我们的网络服务器上的子文件夹中的单独应用程序池中运行。我们在 12 月升级到 .NET 4.5,在 1 月升级到 EF5。我们昨天进行了标准的 Web 部署,没有触及此代码,并且 WCF 服务停止工作。

我们可以将旧代码移动到不同的生产服务器,它可以工作。在生产站点上使用旧代码时,我们会收到一个代码生成错误,表明与数据库的连接问题(无法登录)。

我们尝试使用升级的 4.5 和 EF5 部署 WCF,但出现运行时错误:“'System.Data.Entity.Internal.AppConfig' 的类型初始化程序引发异常。”我们已经为 EF5 完成了所有指示的配置更改,例如 defaultConnectionFactory。这样做时,WCF 在调用任何服务方法时开始向服务端点提供 301 重定向。我们很困惑为什么正常的 Web 部署会导致这些问题,以及为什么我们不能部署升级的 EF 版本来让我们摆脱这个漏洞。

这是我们的业务合作伙伴使用的实时且非常活跃的服务。

【问题讨论】:

与答案无关,但如果您正在升级 EF,为什么不升级到最新版本 6.02 我发现自己无法理解您的描述。十二月和一月有什么关系?如果您的 Web 部署不涉及 WCF 服务,那么您部署了什么?如果您部署了其他一些应用程序,那么您升级了什么? WCF 服务还是那个应用程序?这一切都让我很困惑。 我们之前升级了网站.net和EF。我们做了一个简单的部署,确实更新了一些 edmx,但没有任何东西应该触及这个服务。该服务被隔离在它自己的应用程序和虚拟目录中。然而,它停了下来。理论上,该服务应该能够保持在我们想要的任何版本的 EF 和 .NET 中,只要数据结构不变。我们认为服务使用的底层数据结构没有改变,因为我们可以将它移动到不同的服务器并且它可以工作。希望这只是一个奇怪的 GAC 或 IIS 问题,我们认为最好重新编译为 4.5 和 EF5 但是,我们无法部署 4.5/EF4 版本的服务,导致出现上述错误。 所以,.NET 4.5/EF4 在开发或/和测试环境中工作正常吗?事件日志说明了什么? 【参考方案1】:

已解决。事件日志什么也没说。它看起来是 IIS 和接口之间的绑定问题。原来是冲突的 web.config 阻止 IIS 完全加载 web.config/导致重复条目。导致中断的唯一配置项是 EntityFramework 连接字符串。我们在 .NET 4.5 上运行 EF5.0。这是有问题的连接字符串:

根 Web.Config 中的字符串:

<add name="MyConfigurationEntities" connectionString="metadata=res://*/MyConfigurationModel.csdl|res://*/MyConfigurationModel.ssdl|res://*/MyConfigurationModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=SERVER1;Initial Catalog=MyConfiguration;User ID=sa;Password=XXXX;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Web 服务 Web.Config 中的字符串:

<add name="MyConfigurationEntities" connectionString="metadata=res://*/MyConfigurationModel.csdl|res://*/MyConfigurationModel.ssdl|res://*/MyConfigurationModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=Server1;Initial Catalog=MyConfiguration;User ID=sa;Password=XXXX;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

我们的文件夹结构是:

/web.config

/webservices/webservice/web.config

【讨论】:

以上是关于升级到 .NET 4.5 和 EF5。不再能够部署 WCF 服务。的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 不再使用 xCode 4.5 滚动,部署在 5.x 或 6.0

Visual Studio 2022 不支持 .NET Framework 4.5 项目的解决办法

从 .Net 4.0 到 4.5 的重定向解决方案 - 如何重定向 NuGet 包?

升级到 .NET 4.5 后获取 AddressAlreadyInUseException

从 .NET 4.5 MVC 4 升级到 .NET 4.5.2 MVC 5.2

将简单的 .NET 4.5 Web API 模板部署到 Elastic Beanstalk