安装 WindowsXP 更新后出现 WCF 服务错误

Posted

技术标签:

【中文标题】安装 WindowsXP 更新后出现 WCF 服务错误【英文标题】:WCF service errors after installing WindowsXP updates 【发布时间】:2011-03-01 13:32:13 【问题描述】:

你好,

今天在我开始开发我的应用程序之前,我更新了我的 WinXP。安装完所有更新后,我的 WCF 服务停止工作。当我尝试在浏览器中打开 service.svc 文件时出现以下错误:

Configuration Error

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 

Parser Error Message: An error occurred creating the configuration section handler for system.serviceModel/bindings: Could not load type 'System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement' from assembly 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Source Error: 


Line 131:       </behaviors>
Line 132:
Line 133:       <bindings>
Line 134:           <wsHttpBinding>
Line 135:               <binding name="MyWSHttpBinding" maxReceivedMessageSize="2147483647">

我的同事尝试在更新之前运行相同的服务,并且运行良好。安装更新后他也有同样的问题。有人可以帮帮我吗?

【问题讨论】:

我无法重现,抱歉 - WCF 3.5 和 4 .svcs 在升级后对我来说都很好,无需重新编译:-/ 听起来您正在运行 3.5,并且您现在有两个程序集不同步:有两个 .NET 3.5SP1 更新,KB982168 和 KB979909 - 你确定都安装了吗?如果做不到这一点,我就没有什么好主意了 - 通常的 ServiceModelReg -i 值得一试,但这看起来不是问题。 我好像没有 KB982168。我在哪里可以找到它?我在 MS 更新网站上找不到它。 即使安装了上述更新后问题仍然存在 @niao :-( 那时我会联系微软支持。鉴于很多人都有这个问题,我认为这是一个错误和不收费的事件(我对 Silverlight SDK 问题做了同样的事情)。与此同时,我认为值得回滚 KB979909 以查看是否可以为您解决此问题,但我不确定还有什么建议。 谢谢。我已经回滚了这个更新,我可以再次工作。但显然这个问题必须解决。 【参考方案1】:

到目前为止,问题似乎确实来自更新 KB982168,并且仅在 2003 服务器上。 Microsoft 支持人员怀疑 HttpTransportSecurity 构造函数中存在试图实例化 ExtendedProtectionPolicy 对象的错误,但此类在 2003 服务器(或 XP 机器)上的 system.dll 中不存在(您可以使用反射器检查)。它确实存在于 2008 或 Vista 及更高版本的 DLL 中。如果问题得到确认,我认为很快就会有一个热修复发布。同时建议不要安装更新。我会及时通知你的。

【讨论】:

微软有没有官方的cmets或关于这个问题的建议? 还没有,支持人员告诉我他们会在 2 或 3 天内回复我并提供更多信息。 您好,微软还有其他反馈吗? 还没有,他们正在分析我从服务器提供的日志。他们告诉我,这似乎是一个主要问题,因为很多人都遇到了同样的问题。所以我很有信心很快就会发布解决方案【参考方案2】:

我只是想报告此问题的官方知识库文章已发布在以下位置:http://support.microsoft.com/kb/2262911

上述解决方法是正确的,并且与您在此知识库文章中找到的解决方法相同。

知识库文章中提供的补丁已经过验证,可以解决安装问题并确保生产环境安全。我们还将在知识库文章中发布一个 Fix-It 补丁,以无缝解决此问题,而无需执行解决步骤。鉴于我们已经确定了此问题的根本原因,所有导致安装失败的先前修补程序都将得到适当更新。

WCF 应用程序必须畅通无阻,并且能够在所有计算机上成功安装 Windows Update KB # 982167 和/或 982168,这一点很重要。如果您已卸载 Windows 更新,请按照知识库文章在您的计算机上获取此更新。

很抱歉给您带来不便。

谢谢,

艾丽卡 微软项目经理

【讨论】:

【参考方案3】:

问题是由路径安装程序的行为不正确的组件引起的。这存在于多个修补程序中,并且可能导致安装顺序不正确或跳过补丁的安装。

这是微软支持团队提供的解决此问题的热修复程序。

安装 KB982168,它应该会重现错误。 注意 %WINDIR%\Microsoft.NET\Framework\v2.0.50727\system.dll 的版本(应该是 2.0.50727.3053) 下载 KB975954 修补程序: https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=26146 您需要选择包裹 对应于您的操作系统 架构:NDP20SP2-KB975954-x86.exe (MSI)、NDP20SP2-KB975954-x64.exe (MSI)、NDP20SP2-KB975954-IA64.exe (MSI) 为您的操作系统架构安装适当的修补程序。 从提升的提示符运行以下命令行: msiexec /f C09FB3CD-3D0C-3F2D-899A-6A1D67F2073F 检查 %WINDIR%\Microsoft.NET\Framework\v2.0.50727\system.dll 的版本(应该是 2.0.50727.4443)

我在测试服务器上安装了它,它解决了这个问题。

毫无疑问,这将很快集成到 Windows 更新中。

希望这会有所帮助。

【讨论】:

不介意知道在那个 guid 上运行 msiexec 实际上 做了什么,但不管它做了什么,它似乎已经解决了所有问题。所以这很酷。 msiexec /f 是 laucnh 用于修复产品或包,GUID 是 .NET Framework 2.0 SP2 的 GUID。更多信息在这里:blogs.msdn.com/b/astebner/archive/2009/04/16/9553804.aspx【参考方案4】:

我通过卸载 KB976769v2 解决了这个问题。

【讨论】:

【参考方案5】:

我已将错误报告给 Microsoft。我会等待技术支持的电话。

【讨论】:

别担心,我会的。同时,我正在尝试卸载更新 KB982168 以查看它是否像为您解决了问题。 我卸载了 KB979909,它现在也解决了这个问题......我仍在等待微软的反馈。 到目前为止:问题似乎确实来自更新 KB982168 并且仅在 2003 服务器上。 Microsoft 支持人员怀疑 HttpTransportSecurity 构造函数中存在试图实例化 ExtendedProtectionPolicy 对象的错误,但此类在 2003 服务器(或 XP 机器)上的 system.dll 中不存在(您可以使用反射器检查)。它确实存在于 2008 或 Vista 及更高版本的 DLL 中。如果问题得到确认,我认为很快就会发布一个热修复程序。意味着虽然建议不要安装更新。我会及时通知你的。

以上是关于安装 WindowsXP 更新后出现 WCF 服务错误的主要内容,如果未能解决你的问题,请参考以下文章

安装或更新服务后服务激活错误

WCF:更新服务参考提供重复的配置条目

在 WCF 数据服务应用程序中迁移实体框架 6 和 VS2013 后无法更新或删除

在 IIS 上托管 WCF 后出现“请求错误”

实体框架数据未使用 Wcf 服务保存或更新

在 VS 2010 中更新 WCF 服务对 WebService 问题的引用