0

我渴望将相同的合同和服务公开为 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" />

谢谢!

4

1 回答 1

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”

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

<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>
于 2012-03-15T15:36:02.427 回答