WCF错误:客户端和服务绑定可能不匹配?

时间:2010-05-22 10:51:05

标签: c# wcf

让我们看看服务器配置和客户端配置。然后帮我找到这些配置之间的区别!!

客户端配置

<system.serviceModel>
<client>
  <endpoint address="http://localhost/admin2/AdminCentralService.svc"
            binding="wsHttpBinding"
            bindingConfiguration="WSHttpBinding_Config"
            contract="TIR.ThreeTier.ICommandInvoker"
            name="AdminCentralServiceConfig" />
  <endpoint binding="wsHttpBinding"
            bindingConfiguration="WSHttpBinding_Config"
            contract="TIR.ThreeTier.ICommandInvoker"
            name="CommandInvokerConfig" />
</client>

<bindings>
  <wsHttpBinding>
    <binding name="WSHttpBinding_Config"
             closeTimeout="00:10:00"
             openTimeout="00:10:00"
             receiveTimeout="00:10:00"
             sendTimeout="00:10:00"
             bypassProxyOnLocal="false"
             transactionFlow="false"
             hostNameComparisonMode="StrongWildcard"
             maxBufferPoolSize="2147483647"
             maxReceivedMessageSize="2147483647"
             messageEncoding="Mtom"
             textEncoding="utf-8"
             useDefaultWebProxy="true"
             allowCookies="false">
      <readerQuotas maxDepth="2147483647"
                    maxStringContentLength="2147483647"
                    maxArrayLength="2147483647"
                    maxBytesPerRead="2147483647"
                    maxNameTableCharCount="2147483647" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
      <security mode="Message">
        <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
        <message clientCredentialType="Windows"
                 negotiateServiceCredential="true"
                 algorithmSuite="Default"
                 establishSecurityContext="true" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

服务器配置

<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior name="AdminCentral.Business.Web.Service1Behavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <wsHttpBinding>
    <binding name="WSHttpBinding_Config"
             closeTimeout="00:10:00"
             openTimeout="00:10:00"
             receiveTimeout="00:10:00"
             sendTimeout="00:10:00"
             bypassProxyOnLocal="false"
             transactionFlow="false"
             hostNameComparisonMode="StrongWildcard"
             maxBufferPoolSize="2147483647"
             maxReceivedMessageSize="2147483647"
             messageEncoding="Mtom"
             textEncoding="utf-8"
             useDefaultWebProxy="true"
             allowCookies="false">

      <readerQuotas maxDepth="2147483647"
                    maxStringContentLength="2147483647"
                    maxArrayLength="2147483647"
                    maxBytesPerRead="2147483647"
                    maxNameTableCharCount="2147483647"/>

      <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false"/>
      <security mode="Message">
        <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
        <message clientCredentialType="Windows"
                 negotiateServiceCredential="true"
                 algorithmSuite="Default"
                 establishSecurityContext="true"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="AdminCentral.Business.Web.Service1Behavior"
           name="AdminCentral.Business.Web.AdminCentralService">
    <endpoint address=""
              binding="wsHttpBinding"
              contract="AdminCentral.Business.Web.ICommandInvoker">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>

1 个答案:

答案 0 :(得分:9)

要使用自定义绑定,您需要在客户端服务器端指定 bindingConfiguration 属性。像这样:

服务器端:

<endpoint address=""
          binding="wsHttpBinding"
          bindingConfiguration="WSHttpBinding_Config"
          contract="AdminCentral.Business.Web.ICommandInvoker">
  <identity>
    <dns value="localhost" />
  </identity>
</endpoint>

客户端:

<endpoint address="!!__!_server_address_!__!!"
          binding="wsHttpBinding"
          bindingConfiguration="WSHttpBinding_Config"
          contract="AdminCentral.Business.Web.ICommandInvoker">
</endpoint>