C# WCF路由器在RM数据包上引发异常

C# WCF路由器在RM数据包上引发异常,c#,wcf,c#-4.0,soap,ssl,C#,Wcf,C# 4.0,Soap,Ssl,我有一个WCF路由器设置,其中客户端使用可靠消息传递(RMP)通过WS-Http绑定与目标服务进行通信。当客户端服务与路由器之间的连接为WS-Http,而路由器与目标服务之间的连接为WS-Http时,所有这些都按预期工作。当SOAP数据包到达路由器时,我会记录它们,它们看起来像: <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:r="http://docs.oasis-open.org/ws-rx/ws

我有一个WCF路由器设置,其中客户端使用可靠消息传递(RMP)通过WS-Http绑定与目标服务进行通信。当客户端服务与路由器之间的连接为WS-Http,而路由器与目标服务之间的连接为WS-Http时,所有这些都按预期工作。当SOAP数据包到达路由器时,我会记录它们,它们看起来像:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:r="http://docs.oasis-open.org/ws-rx/wsrm/200702" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <r:Sequence s:mustUnderstand="1">
      <r:Identifier>urn:uuid:76bac170-ace3-4a9b-8a5f-eba263cbdf57</r:Identifier>
      <r:MessageNumber>1</r:MessageNumber>
    </r:Sequence>
    <a:Action s:mustUnderstand="1">http://tempuri.org/Foo/Connect</a:Action>
    <a:MessageID>urn:uuid:d76b500f-f59e-41a1-9831-cb33e2f9eb3c</a:MessageID>
    <a:ReplyTo>
      <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
    <a:To s:mustUnderstand="1">http://foobox:62435/RouterService.svc</a:To>
  </s:Header>
  <s:Body>
    <Connect xmlns="http://tempuri.org/">
      <!-- Request body removed -->
    </Connect>
  </s:Body>
</s:Envelope>

urn:uuid:76bac170-ace3-4a9b-8a5f-eba263cbdf57
1.
"不可能
由于接收器处的ContractFilter不匹配,在接收器处处理
端点调度器。这可能是因为合同不匹配
(发送方和接收方之间的操作不匹配)或绑定/安全
发送方和接收方之间不匹配。检查发送者和
接收方具有相同的合同和相同的约束力(包括
安全要求,例如消息、传输、无)

考虑到服务接口不处理
CreateSequence
消息,这个错误是有意义的,但我不确定为什么切换到SSL会导致这些消息显式发送到目标服务

我可以做些什么来让路由器正确地传递/处理WS-RM数据包

更新:

WS-HTTP over Transport Security(似乎)不允许可靠的消息传递(生成错误),因此客户端到路由器的连接正在使用带有可靠消息传递的HTTPS绑定。我认为问题在于路由器需要将RM操作消息转换为WS-HTTP消息,但我不确定如何做到这一点。

解决了这个问题

路由器上面向客户端服务的端点正在使用
WsHttpBinding
而不是
CustomBinding
进行设置,该绑定使用可靠消息与客户端的HTTPS绑定相匹配。在将其更改为使用正确的绑定后,流量现在通过路由器时不会出现问题

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</a:Action>
    <a:MessageID>urn:uuid:96d7c674-471e-4c9d-8ba5-7a1c8ed3275b</a:MessageID>
    <a:To s:mustUnderstand="1">https://foobox:44300/RouterService.svc</a:To>
  </s:Header>
  <s:Body>
    <CreateSequence xmlns="http://schemas.xmlsoap.org/ws/2005/02/rm">
      <AcksTo>
        <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
      </AcksTo>
      <Offer>
        <Identifier>urn:uuid:de2129d5-58f2-4672-915f-eb3196d51bff</Identifier>
      </Offer>
    </CreateSequence>
  </s:Body>
</s:Envelope>