【问题标题】:wcf enablewebscript element not recognisedwcf enablewebscript 元素无法识别
【发布时间】:2011-12-14 12:51:10
【问题描述】:

我在尝试使 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 服务器网络版服务包 1 - 安装了 .NET Framework 3.5sp1 - 安装了 Microsoft AJAX Extensions v1.0

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

关于在哪里查看以及为什么安装的 service 3.5 框架似乎没有被使用的任何想法?

【问题讨论】:

    标签: asp.net wcf configuration


    【解决方案1】:

    (我知道这是一个老问题,但无论如何 - 我自己在客户那里遇到了同样的问题,通过 Google 搜索发现了您未回答的问题,所以......)

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

        <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>
    

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

    【讨论】:

    • 通过旧问题并接受这个作为答案。我最终解决了这个问题,但不记得是如何解决的。
    猜你喜欢
    • 2023-03-15
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多