C# WCF:CustomBinding混淆了端点

C# WCF:CustomBinding混淆了端点,c#,wcf,security,endpoint,C#,Wcf,Security,Endpoint,我正在使用CustomBinding启用Soap 1.1(端点不支持1.2)+寻址1.0。端点仅在SSL上可用,并在某种Java/Weblogic平台上运行 以下是我的配置: <customBinding> <binding name="Soap11Addr10"> <textMessageEncoding messageVersion="Soap11WSAddressing10" /> <httpsTranspo

我正在使用CustomBinding启用Soap 1.1(端点不支持1.2)+寻址1.0。端点仅在SSL上可用,并在某种Java/Weblogic平台上运行

以下是我的配置:

<customBinding>
    <binding name="Soap11Addr10">
        <textMessageEncoding messageVersion="Soap11WSAddressing10" />
        <httpsTransport/>
    </binding>
</customBinding>

[……]


此配置似乎混淆了端点。当我对某个端口执行请求时,WCF首先发送RequestSecurityTokenResponse消息,我认为这可能是不幸的。以下是RSTR信封的跟踪:

<s:Envelope xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue</a:Action>
    <a:RelatesTo>urn:uuid:7348d908-b767-43e8-9770-09a38461ee87</a:RelatesTo>
  </s:Header>
  <s:Body>
    <t:RequestSecurityTokenResponse Context="uuid-7a3c9fde-053d-46e7-aa08-f5725b082691-287" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
      <t:BinaryExchange ValueType="http://schemas.xmlsoap.org/ws/2005/02/trust/spnego" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">TlRMTVNTUAACAAAAEAAQADgAAAA1wpriPjzjL4iwIJhAmcsBAAAAAGAAYABIAAAABgByFwAAAA9TAEsATwBHAEsAQQBUAFQAAgAQAFMASwBPAEcASwBBAFQAVAABABAAUwBLAE8ARwBLAEEAVABUAAQAEABTAGsAbwBnAGsAYQB0AHQAAwAQAFMAawBvAGcAawBhAHQAdAAHAAgAj73D884kywEAAAAA</t:BinaryExchange>
    </t:RequestSecurityTokenResponse>
  </s:Body>
</s:Envelope>

http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue
urn:uuid:7348d908-b767-43e8-9770-09a38461ee87
TlRMTvtuaaaaaaaaaaaaaqaadgaa1WPRIPjzjl4IwijhamcsbaaagayayababababababababaabaabaabaabaabaabaabaabaabaabaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaaBaa
端点条形图:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Header></env:Header>
  <env:Body>
    <env:Fault xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/">
      <faultcode xmlns="">ns0:MustUnderstand</faultcode>
      <faultstring xml:lang="en" xmlns="">One or more mandatory SOAP header blocks not understood</faultstring>
    </env:Fault>
  </env:Body>
</env:Envelope>

ns0:我必须理解
未理解一个或多个必需的SOAP头块
是否可以停止发送初始RSTR


我可以根据请求提供更多的跟踪和日志数据。

在不了解更多目标服务的情况下,很难说它期望什么,但我猜WCF使用的是消息安全性,这意味着每个消息都是单独加密的。您可能只需要传输级安全性(即https)

您可以尝试在绑定配置中设置

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Header></env:Header>
  <env:Body>
    <env:Fault xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/">
      <faultcode xmlns="">ns0:MustUnderstand</faultcode>
      <faultstring xml:lang="en" xmlns="">One or more mandatory SOAP header blocks not understood</faultstring>
    </env:Fault>
  </env:Body>
</env:Envelope>