wcf enablewebscript元素无法识别

时间:2011-10-24 22:50:16

标签: asp.net wcf configuration

我遇到了服务器试图让WCF服务正常运行的配置问题。编译器不喜欢 enablewebscript 作为行为中的选项。

下面是web.config声明元素

的部分
    <behaviors>
    <serviceBehaviors>
        <behavior name="metadataAndDebug">
            <serviceMetadata
              httpGetEnabled="true"
              httpGetUrl=""/>
            <serviceDebug
              httpHelpPageEnabled="true"
              includeExceptionDetailInFaults="true" />
        </behavior>
        <behavior name="AutoCompleteGet">
            <serviceMetadata httpGetEnabled="true"/>
        </behavior>
    </serviceBehaviors>

    <endpointBehaviors>
    <behavior name="MyApp.Webservices.AspNetAjaxBehavior">
      <enableWebScript/>         
    </behavior>          
  </endpointBehaviors>        
</behaviors>

和编译器报告的错误。

Parser Error Message: Invalid element in configuration. The extension name 'enableWebScript' is not registered in the collection at system.serviceModel/extensions/behaviorExtensions.

我在服务器上有以下信息: - Windows Server Web Edition Service Pack 1 - 安装了.NET Framework 3.5sp1 - 安装了Microsoft AJAX Extensions v1.0

注意:我今天早上刚刚开启了.NET Framework 3.0中的WCF激活(因为这是该服务器上第一次使用WCF服务)。在此激活之后,错误开始了。在激活之前,服务返回了预期的404错误消息。

关于在哪里查看的想法,以及为什么安装的服务3.5框架似乎不被使用?

1 个答案:

答案 0 :(得分:0)

(我知道这是一个古老的问题,但无论如何 - 我自己在客户端遇到同样的问题,通过谷歌搜索遇到了未解决的问题,所以......)

我见过的其他一些消息来源表明它与已卸载的WCF有关(使用ServiceModelReg.exe -u命令)。由于它不是我正在处理的服务器,我不知道是否是这种情况,但是可以通过在web.config中手动注册行为扩展来解决特定的问题:< / p>

    <extensions>
        <behaviorExtensions>
            <add name="enableWebScript" type="System.ServiceModel.Configuration.WebScriptEnablingElement, System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        </behaviorExtensions>
    </extensions>

如果有的话可能会丢失,其他的东西将是 - 你可能想在你知道工作的机器上检查machine.config并拿走整个部分 - 这里是我的参考:

    <extensions>
        <behaviorExtensions>
            <add name="persistenceProvider" type="System.ServiceModel.Configuration.PersistenceProviderElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="workflowRuntime" type="System.ServiceModel.Configuration.WorkflowRuntimeElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="enableWebScript" type="System.ServiceModel.Configuration.WebScriptEnablingElement, System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="webHttp" type="System.ServiceModel.Configuration.WebHttpElement, System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior" type="Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior, Microsoft.VisualStudio.Diagnostics.ServiceModelSink, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></behaviorExtensions>
        <bindingElementExtensions>
            <add name="webMessageEncoding" type="System.ServiceModel.Configuration.WebMessageEncodingElement, System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="context" type="System.ServiceModel.Configuration.ContextBindingElementExtensionElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        </bindingElementExtensions>
        <bindingExtensions>
            <add name="wsHttpContextBinding" type="System.ServiceModel.Configuration.WSHttpContextBindingCollectionElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="netTcpContextBinding" type="System.ServiceModel.Configuration.NetTcpContextBindingCollectionElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="webHttpBinding" type="System.ServiceModel.Configuration.WebHttpBindingCollectionElement, System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add name="basicHttpContextBinding" type="System.ServiceModel.Configuration.BasicHttpContextBindingCollectionElement, System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        </bindingExtensions>
    </extensions>

当然,取决于首先丢失的原因,不能保证它会修复它。祝你好运......