在服务器上安装.NET 3.5 SP1破坏了WCF

时间:2009-07-09 07:57:45

标签: wcf installation .net-3.5

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

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

通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态。

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

  • 配置部分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>

Pertinant Exception Section:

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

5 个答案:

答案 0 :(得分:0)

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

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


我依稀记得这样的错误,与<assemblies>部分中的程序集顺序有关。尝试将system.core放在第一顺序。

答案 1 :(得分:0)

复制位是红色鲱鱼,关键是你的例外。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

将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动态数据。您可以在上面的下载链接中阅读有关新功能的所有信息。

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

答案 4 :(得分:0)

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

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

我依稀记得当我们升级时遇到类似的问题,而iirc,这就是修复。我知道这没什么意义,但无论如何都要尝试。它至少不会破坏任何东西。