我们有一个wcf服务,它作为应用程序在子文件夹中的Web服务器上的单独应用程序池中运行。我们在12月升级到.NET 4.5,在1月升级到EF5。我们昨天做了标准的Web部署,没有触及此代码,WCF服务停止工作。
我们可以将旧代码移动到不同的生产服务器,它可以工作。当在生产站点上使用旧代码时,我们得到一个代码生成错误,指示数据库的连接问题(无法登录)。
我们尝试使用升级的4.5和EF5部署WCF,但得到运行时错误:“System.Data.Entity.Internal.AppConfig的类型初始化程序引发异常。”我们已完成所有指定的配置更改,例如defaultConnectionFactory,用于EF5。执行此操作时,WCF在调用任何服务方法时开始向服务端点提供301重定向。我们很难理解为什么正常的Web部署会导致这些问题,以及为什么我们无法部署升级的EF版本以使我们脱离这个漏洞。
这是我们的业务合作伙伴使用的实时且非常活跃的服务。
答案 0 :(得分:0)
解决。事件日志什么也没说。它看起来是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="Data Source=SERVER1;Initial Catalog=MyConfiguration;User ID=sa;Password=XXXX;MultipleActiveResultSets=True"" 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="Data Source=Server1;Initial Catalog=MyConfiguration;User ID=sa;Password=XXXX;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
我们的文件夹结构是:
/web.config
/webservices/webservice/web.config