WCF 4和多个端点绑定

时间:2012-03-15 15:19:00

标签: wcf wcf-binding wcf-4

我很想让同样的合同和服务作为basicHttpBinding和webHttpBinding公开,以便能够进行POST调用。不知何故,当我查看wsdl时,它永远不会看到webHttpBinding的端点。我做错了什么?

<system.serviceModel>
<services>
  <service name="MyService">
    <endpoint address =""
              binding="basicHttpBinding"
              name="EndpointBasic"
              contract="IMyService"/>

    <endpoint address ="PostMethod"
              binding="webHttpBinding"
              name="EndpointJson"
              contract="IMyService"/>
    <host>
      <baseAddresses>
        <add baseAddress ="http://localhost/WebsiteName/MyService.svc"/>
      </baseAddresses>
    </host>
  </service>
</services>
<bindings>
  <basicHttpBinding>
    <binding name="basicBinding" />
  </basicHttpBinding>
  <webHttpBinding>
    <binding name="Postbinding"
             maxBufferSize="65536"
             maxReceivedMessageSize="2000000000"
             transferMode="Streamed">
    </binding>
  </webHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="JsonBehavior">
      <webHttp defaultOutgoingResponseFormat="Json" />
    </behavior>
  </endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

谢谢!

1 个答案:

答案 0 :(得分:1)

我有以下服务元素条目,它适用于SOAP和REST:

<service name="XMLService.RestAndSoapService" behaviorConfiguration="default">
        <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" bindingConfiguration="RestBinding" name="SampleService" contract="XMLService.IRestAndSoapService" />
        <endpoint address="soap" binding="basicHttpBinding" bindingConfiguration="noSecurity" contract="XMLService.IRestAndSoapService" />
      </service>

您的配置中需要注意的事项:

  1. 在您的服务元素中,您的合同和服务名称不是完全限定的。确保它们完全合格,即。包括命名空间和界面。

  2. 您尚未将bindingConfiguration指定为webHttpEndpoint的“Postbinding”和basicHttpBinding端点的“basicBinding”

  3. 因此,通过上述更改,您的配置可能如下所示:

    <service name="namespace.MyService">
            <endpoint address =""
                      bindingConfiguration="basicBinding"
                      binding="basicHttpBinding"
                      name="EndpointBasic"
                      contract="namespace.IMyService"/>
    
            <endpoint address ="PostMethod"
                      bindingConfiguration="Postbinding"
                      binding="webHttpBinding"
                      name="EndpointJson"
                      contract="namespace.IMyService"/>
            <host>
              <baseAddresses>
                <add baseAddress ="http://localhost/WebsiteName/MyService.svc"/>
              </baseAddresses>
            </host>
          </service>
    
相关问题