WCF TCP安全customBinding:没有可以接受消息的频道

时间:2016-01-08 12:30:59

标签: c# wcf security tcp

我们正在使用自定义绑定 TCP 使用证书安全。 WCF服务器位于负载平衡服务器之后。

我们在主机服务器上收到以下异常。

没有任何渠道可以接受带有操作的消息' {MethodName}'

在客户端,我们得到了这些例外

  1. 安全处理器无法在中找到安全标头 信息。这可能是因为消息是不安全的故障或 因为沟通之间存在绑定不匹配 派对。如果为安全性配置了服务,则会发生这种情况 并且客户端没有使用安全性。
  2. 通信对象,System.ServiceModel.Security.SecuritySessionClientSettings`1 + ClientSecurityDuplexSessionChannel [System.ServiceModel.Channels.IDuplexSessionChannel], 不能用于通信,因为它处于Faulted状态。
  3. 服务器未提供有意义的回复;这可能是造成的 合同不匹配,过早会话关闭或内部 服务器错误。
  4. 从另一方收到无担保或错误保护的故障。请参阅内部FaultException以获取故障代码和详细信息。
  5. 已建立的连接已被主机中的软件中止
  6. 这是客户端的绑定

    <binding name="CustomBinding" closeTimeout="00:02:00" openTimeout="00:02:00"                                  sendTimeout="00:02:00">
      <transactionFlow/>
      <security authenticationMode="SecureConversation" requireSecurityContextCancellation="true">
        <secureConversationBootstrap authenticationMode="CertificateOverTransport"/>
      </security>
      <binaryMessageEncoding compressionFormat="GZip" />
      <sslStreamSecurity requireClientCertificate="true"/>
      <tcpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
        <connectionPoolSettings groupName="GN" />
      </tcpTransport>
    </binding
    

    这是服务器端绑定

    <binding name="CustomBinding" receiveTimeout="00:02:00" sendTimeout="00:02:00">
          <transactionFlow/>
          <security authenticationMode="SecureConversation" requireSecurityContextCancellation="true">
            <secureConversationBootstrap authenticationMode="CertificateOverTransport"/>
          </security>
          <binaryMessageEncoding compressionFormat="GZip" />
          <sslStreamSecurity requireClientCertificate="true"/>
          <tcpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
            <connectionPoolSettings maxOutboundConnectionsPerEndpoint="500" />
          </tcpTransport>
        </binding>
    

    以下是终点行为

    <endpointBehaviors>          
        <behavior name="CustomBehavior">
          <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
          <clientCredentials>
            <clientCertificate findValue="" x509FindType="FindByThumbprint" storeLocation="LocalMachine" />
            <serviceCertificate>
              <authentication certificateValidationMode="PeerOrChainTrust"/>
            </serviceCertificate>
          </clientCredentials>
        </behavior>     
      </endpointBehaviors>
    

    以下是服务行为

    <behavior name="CustCertBehavior">
          <serviceCredentials>
            <serviceCertificate findValue="" x509FindType="FindByThumbprint" storeLocation="LocalMachine" />
            <clientCertificate>
              <authentication certificateValidationMode="PeerOrChainTrust" />
            </clientCertificate>
          </serviceCredentials>
        </behavior>
    

    有关如何解决此问题的任何建议?

0 个答案:

没有答案