【问题标题】:Installing .NET 3.5 SP1 on server broke WCF在服务器上安装 .NET 3.5 SP1 破坏了 WCF
【发布时间】:2010-11-09 07:14:12
【问题描述】:

我在以前安装了 .NET 3.0 SP2 的服务器上安装了 .NET 3.5 SP1。

在安装之前网站运行良好。安装并随后重新启动服务器后,站点会显示,但使用 WCF 服务的任何内容都已停止工作。当对客户端代理进行任何调用时,异常日志会报告如下异常:

通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为它处于故障状态。

安装后服务器的应用程序事件日志出现以下错误:

  • 配置节 system.serviceModel.activation 已存在于 c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config。

  • 配置节 system.runtime.serialization 已存在于 c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config。

  • 配置节 system.serviceModel 已存在于 c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config 中。

这似乎与任何与 WCF 相关的东西都停止工作的事实一致。

我在服务器配置或 WCF 方面没有经验,因此在这方面寻求任何帮助。

谢谢!!

来自 machine.config:

<sectionGroup name="system.serviceModel" type="System.ServiceModel.Configuration.ServiceModelSectionGroup, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="behaviors" type="System.ServiceModel.Configuration.BehaviorsSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <section name="bindings" type="System.ServiceModel.Configuration.BindingsSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <section name="client" type="System.ServiceModel.Configuration.ClientSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <section name="comContracts" type="System.ServiceModel.Configuration.ComContractsSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <section name="commonBehaviors" type="System.ServiceModel.Configuration.CommonBehaviorsSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowDefinition="MachineOnly" allowExeDefinition="MachineOnly"/>
            <section name="diagnostics" type="System.ServiceModel.Configuration.DiagnosticSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <section name="extensions" type="System.ServiceModel.Configuration.ExtensionsSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <section name="machineSettings" type="System.ServiceModel.Configuration.MachineSettingsSection, SMDiagnostics, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowDefinition="MachineOnly" allowExeDefinition="MachineOnly"/>
            <section name="serviceHostingEnvironment" type="System.ServiceModel.Configuration.ServiceHostingEnvironmentSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <section name="services" type="System.ServiceModel.Configuration.ServicesSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        </sectionGroup>
        <sectionGroup name="system.serviceModel.activation" type="System.ServiceModel.Activation.Configuration.ServiceModelActivationSectionGroup, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="diagnostics" type="System.ServiceModel.Activation.Configuration.DiagnosticSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <section name="net.pipe" type="System.ServiceModel.Activation.Configuration.NetPipeSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <section name="net.tcp" type="System.ServiceModel.Activation.Configuration.NetTcpSection, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        </sectionGroup>

<sectionGroup name="system.runtime.serialization" type="System.Runtime.Serialization.Configuration.SerializationSectionGroup, System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <section name="dataContractSerializer" type="System.Runtime.Serialization.Configuration.DataContractSerializerSection, System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </sectionGroup>

来自网站的 web.config

  <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
    </sectionGroup>
  </sectionGroup>
</sectionGroup>

。 . .

<system.serviceModel>
<bindings>
  <wsHttpBinding>
    <binding name="WSHttpBinding_IService" closeTimeout="00:03:00"
      openTimeout="00:03:00" receiveTimeout="00:10:00" sendTimeout="00:03:00"
      bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
      maxBufferPoolSize="524288" maxReceivedMessageSize="131072" messageEncoding="Text"
      textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00"
        enabled="false" />
      <security mode="Message">
        <transport clientCredentialType="Windows" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="Windows" negotiateServiceCredential="true"
          algorithmSuite="Default" establishSecurityContext="true" />
      </security>
    </binding>       
  </wsHttpBinding>
</bindings>
<client>
  <endpoint address="some address"
    binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService"
    contract="some contact" name="WSHttpBinding_IService" />      
</client>

相关异常部分:

异常信息: 异常类型:TypeLoadException 异常消息:无法从程序集“System.Web.Extensions,Version=3.5.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”加载类型“System.Web.UI.ScriptReferenceBase”。

【问题讨论】:

  • 请发布您的 web.config,或者至少发布 system.serviceModel 和 system.runtime.serialization 位。

标签: wcf installation .net-3.5


【解决方案1】:

如果您在 IIS 中托管 WCF 服务(听起来可能是这样),请尝试重新运行 asp.net IIS 注册工具。

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i

我隐约记得我们升级时遇到了类似的问题,而 iirc,这就是修复。我知道这没什么意义,但还是试试吧。至少它不会破坏任何东西。

【讨论】:

    【解决方案2】:

    在将 Ajax Control Toolkit 驱动的网站上传到服务器时遇到问题?继续阅读以获得快速简便的解决方案! 场景

    如果您在您的网站中添加了一些 Ajax Control Toolkit 扩展程序,您可能已经在本地开发计算机上对它们进行了测试,并惊叹于向您的网站添加一些令人印象深刻的视觉糖果是多么容易。然后,就在您认为当天的工作已经完成并且该将您的新作品上线时,您会遇到错误:

    Could not load type 'System.Web.UI.ScriptReferenceBase' from assembly 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
    

    好吧,您不必太担心,因为这一次解决起来非常简单。 快速修复

    如果您的网站刚刚损坏并且您想让它快速运行,那么最简单的解决方案是将您的标签更改为普通标签。

    ToolkitScriptManager 是一个包装器控件,它提供了 ScriptManager 的功能,但还具有脚本组合功能,以减少工具包生成的外部 javascript 引用的数量。

    所以它就像获取您的代码一样简单

    并将其更改为

    (您的前缀可能与 cc1 不同,但没关系)。 真正的修复

    您的站点抛出错误的真正原因是最新版本的 Ajax Control Toolkit 需要一个 .net 3.5 SP1 运行时环境。这里的关键位是 SP1,即 Service Pack 1。

    要修复它,您只需安装可以从这里下载的 SP1 版本:

    * http://www.microsoft.com/downloads/details.aspx?familyid=ab99342f-5d1a-413d-8319-81da479ab0d7&displaylang=en
    

    这需要在您的服务器上运行,因此您需要远程桌面访问权限才能执行此操作。这种对服务器的控制通常仅适用于专用服务器或 VPS 虚拟服务器。

    如果您有一个简单的共享主机包,那么您需要联系您的虚拟主机并找出他们尚未升级的原因。 SP1 版本是一次重大升级,不仅包含许多错误修复,还包含一些很棒的新功能,例如 ASP.NET 动态数据。您可以在上面的下载链接中阅读有关新功能的所有信息。

    在最坏的情况下,您无法升级主机并且无法移动主机,因为您与他们签订了合同,那么您至少可以依靠本文中间列出的快速修复来获得您的网站再次运行。

    【讨论】:

      【解决方案3】:

      类型加载异常有时很棘手。您可以尝试使用 Fuslogvw.exe 并查看是否可以识别加载错误的来源(什么探测路径等)。 Fuslog Documentation

      【讨论】:

        【解决方案4】:

        您是否使用 .NET 3.5 SP1 (Visual Studio 2008 SP1) 重新构建了代码?

        请发布完整的异常以及堆栈跟踪。这些可能在应用程序事件日志中可用,作为来自源“ASP.NET”的警告。


        我依稀记得有这样一个错误,与&lt;assemblies&gt; 部分中的程序集顺序有关。尝试将 system.core 按顺序放在首位。

        【讨论】:

        • 同时检查 IIS 服务器和站点配置使用的 .NET 版本。
        • 是的,当然,该应用程序总是使用 .net 3.5 sp1 构建的。此外,所有以前的开发、构建、登台和旧生产环境都安装了它。该站点正在移动到需要更新的新服务器,因此我在将 sp 应用到服务器后遇到了问题。感谢您的回复,但仍在寻找解决方案?
        • 站点配置使用的 .net 运行时版本是 2.0.50727。请记住,在安装之前一切正常,包括 WCF 周围的所有 .net 3.0 内容等,因此站点和服务器配置之前是正确的。
        • System.Core 目前在 web.config 中排在首位
        【解决方案5】:

        嗯,重复位是一个红鲱鱼,关键是你的例外。

        System.Web.UI.ScriptReferenceBase 是 3.5 SP1 中的一个新程序集。如果它在那里抱怨,那么服务器只安装了 3.5 并且需要应用服务包。你是 100% 在服务器上安装了 3.5 SP1 吗?

        【讨论】:

        • 是的,我确定我安装了 .net 3.5 sp1。它也列在添加/删除程序下。在安装过程中出现了梨形的东西,这显然导致了我在顶部发布的应用程序事件日志中的这 3 个警告。警告是在 ServiceModelReg 工具执行其操作期间生成的,我一直认为这一定与它有关?我已经尝试卸载并重新安装 sp 但没有任何变化....
        • 听起来确实是安装失败。该程序集实际上是否在 GAC 中?浏览到 C:\Windows\assembly 并检查 System.Web.Extensions 上的版本,我的显示 3.5.30729.196。如果我是你,我很想尝试通过添加/删除程序进行修复。
        • 我的是 3.5.30729.1,根据dzaebel.net/NetVersions.htm 是 SP1,所以仍然不确定....
        • 奇怪。尝试从临时服务器复制 machine.config,然后运行 ​​IISRESET?
        • 听起来安装出错了。或许进行维修?
        猜你喜欢
        • 1970-01-01
        • 2013-08-16
        • 2010-10-07
        • 2011-03-23
        • 2010-09-16
        • 1970-01-01
        • 1970-01-01
        • 2011-05-14
        • 2010-12-15
        相关资源
        最近更新 更多