【问题标题】:Configuration file error while consuming Wcf service with Ajax Request使用 Ajax 请求使用 Wcf 服务时配置文件错误
【发布时间】:2013-01-31 00:43:39
【问题描述】:

我在使用 jquery 使用 WCF 服务时遇到了问题。我收到错误“找不到配置绑定扩展 'system.serviceModel/bindings/webHttpbinding'。验证此绑定扩展已在 system.serviceModel/extensions/bindingExtensions 中正确注册并且拼写正确。”

这是我的 Web.Config 文件:

<system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
      </webHttpBinding>
    </bindings>
    <behaviors>
      <endpointBehaviors>
        <behavior name="RestfulServiceBehavior">
          <webHttp helpEnabled="true"/>
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="WebServiceBehavior">

          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service name="WcfService1.RestfulServiceImp" behaviorConfiguration="WebServiceBehavior">
        <endpoint address="" behaviorConfiguration="RestfulServiceBehavior" 
             bindingConfiguration="webHttpBindingWithJsonP" binding="webHttpbinding" contract="WcfService1.IRestfulServiceImp"/>
        <!--<endpoint address="mex" binding="mexHttpBinding" contract="WcfService1.IRestfulServiceImp"/>-->
        <endpoint address="soap" binding="basicHttpBinding" contract="WcfService1.IRestfulServiceImp"/>
      </service>
    </services> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"  aspNetCompatibilityEnabled="false"/>

  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
          switchValue="Information, ActivityTracing"
          propagateActivity="true">
        <listeners>
          <add name="xml"
   type="System.Diagnostics.XmlWriterTraceListener"
   initializeData="c:\log\Traces.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

这是我的服务名称 RestfulServiceImp,我的合同是 IRestfulServiceImp 请您对这些提出宝贵的建议。

提前致谢。

【问题讨论】:

    标签: c# ajax wcf jquery


    【解决方案1】:

    您的配置中有大小写不匹配,

    <bindings>
          <webHttpBinding>
            <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
          </webHttpBinding>
        </bindings>
    

    <endpoint address="" behaviorConfiguration="RestfulServiceBehavior" 
                 bindingConfiguration="webHttpBindingWithJsonP" binding="webHttpbinding" contract="WcfService1.IRestfulServiceImp"/>
            <!--<endpoint address="mex" binding="mexHttpBinding" contract="WcfService1.IRestfulServiceImp"/>-->
            <endpoint address="soap" binding="basicHttpBinding" contract="WcfService1.IRestfulServiceImp"/>
    

    检查 webHttpBinding 中的大小写差异。您使用的是 webHttpbinding 而不是 webHttpBinding。

    【讨论】:

      【解决方案2】:

      我目前没有打开 VS 来查看,但请确保该案例并不重要。

      'system.serviceModel/bindings/webHttpbinding
      

      对比

      <webHttpBinding>
      

      编辑:所以我打开 VS 并将绑定名称更改为小写并得到相同的错误。尝试修复您的大小写差异。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-01
        • 1970-01-01
        • 2012-04-27
        相关资源
        最近更新 更多