【问题标题】:Microsoft.Web.Services2.SoapClient.SendRequestResponse timing out even though the server is responding with a SOAP message即使服务器使用 SOAP 消息进行响应,Microsoft.Web.Services2.SoapClient.SendRequestResponse 也会超时
【发布时间】:2011-10-14 14:48:48
【问题描述】:

据我了解,发布一些您学到的有用信息的最佳方式是自己提出问题然后回答,所以就这样吧。

场景:

  • 我们有一个应用程序,它从模板 xslt 文件构造 SOAP 请求并包含一些参数,包括 MessageID
  • 它访问的真实服务就像请求一样,愉快地响应,我们的客户端愉快地处理响应
  • 我们正在尝试构建一个模拟服务的存根/响应程序
  • stub 只是实现 IHttpHandler 并响应任何 POST 操作
  • 存根从 XML 文件中读取预设响应,这是一个真实响应的示例,并通过网络发送它
  • Visual Round Trip Analyzer(引擎盖下的 NetMon)和 Fiddler 都可以看到通过线路传输到客户端的响应
  • SendRequestResponse 最终超时并引发异常

【问题讨论】:

    标签: wse wse3.0 wse2.0


    【解决方案1】:

    SoapClient.SendRequestResponse 知道传出请求 SOAP 标头中的 MessageID,并且在收到带有与原始 MessageID 匹配的 RelatesTo 值的消息之前不会完成调用。因此,如果您正在制作响应程序/存根,您需要从请求中解析出 MessageID 并将其注入响应的 SOAP 标头中的 RelatesTo 字段。

    有点奇怪,它不仅仅在任何有效的 SOAP 消息之后返回,并且由于不匹配而引发了一个期望。也许这是 SOAP Web 服务标准的一部分。我没仔细看。

    例子:

    请求:

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance/" xmlns:xsd="http://www.w3.org/2001/XMLSchema/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
      <soap:Header>
        <wsa:MessageID soap:mustUnderstand="1">uuid:20E6C5D8-2E0D-48D0-863D-7789D2CA37A2</wsa:MessageID>
    ...
    

    回复:

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
      <soap:Header>
        <wsa:MessageID SOAP-ENV:mustUnderstand="1" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">uuid:bb1cf43050739c45:248138d0:1328e31d4e2:-5cf4</wsa:MessageID>
        <wsa:RelatesTo RelationshipType="wsa:Reply" SOAP-ENV:mustUnderstand="1" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">uuid:20E6C5D8-2E0D-48D0-863D-7789D2CA37A2</wsa:RelatesTo>
    ...
    

    RelatesTo 值与请求中的 MessageID 值相同。响应中的 MessageID 是新的且唯一的,因为响应消息不是请求消息。

    【讨论】:

      猜你喜欢
      • 2019-10-21
      • 1970-01-01
      • 2018-03-04
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多