检查 HTTP 元数据交换的网络跟踪

任何可以显示原始数据包的网络数据包分析器都可用于检查 HTTP 元数据交换请求。 建议使用 Microsoft 网络监视器 3 (Netmon) 。 有关 Netmon 的详细信息,请参阅 下载 Netmon 和示例 DPWS 筛选器

此诊断过程对于使用安全通道进行通信的客户端和主机可能没那么有用,因为消息内容已加密。

检查 HTTP 元数据交换的网络跟踪

  1. 将主机和客户端配置为跨网络运行 (即,确保主机和客户端将在) 的不同计算机上运行。

  2. 在客户端或主机上安装数据包分析器 (Netmon) 。

  3. 配置数据包分析器以捕获连接主机和客户端的网络适配器上的流量。

  4. 通过启动主机和客户端或在网络资源管理器中按 F5 来重现故障。

  5. 筛选结果以隔离WS-Discovery和元数据交换流量。 若要查看示例 Netmon 筛选器,请参阅 下载 Netmon 和示例 DPWS 筛选器

    注意

    此步骤是可选的。

     

  6. 验证在客户端和主机之间发送的消息是否满足基本流量要求。

验证消息是否满足流量要求

WSDAPI 客户端和主机必须发送符合以下条件的消息。 有关消息模式的一般信息,请参阅 发现和元数据交换消息模式

  • 消息必须满足 主题检查 UDP WS-Discovery 的网络跟踪中提供的流量要求,除非绝对确定WS-Discovery未用于元数据交换。

  • 必须在客户端与 ProbeMatchesResolveMatches 消息的 XAddrs 元素中提供的第一个传输地址之间建立 TCP 连接。 以下列表显示了用于建立 TCP 连接的典型数据包交换。

    • 客户端将 TCP SYN 数据包发送到位于指定端口的主机。
    • 主机将 TCP SYN/ACK 数据包发送到客户端。
    • 客户端将 TCP ACK 数据包发送到位于指定端口的主机。

    客户端发送 TCP ACK 数据包后,将建立 TCP 连接。 请注意,如果以前已建立 TCP 连接,则不会发生此消息交换。

  • 客户端必须发送有效的 Get HTTP 请求和消息。

  • 主机必须侦听 Get HTTP 请求中指定的 URL 路径。

  • Get 元数据消息的 To 元素必须存在且不为空。 To 元素的值必须与主机的终结点地址之一匹配。 主机的终结点地址通常在 ProbeMatchesResolveMatches 消息中播发。

  • 主机必须发送有效的 HTTP 响应标头。 如果初始请求成功,响应标头应包含 HTTP/1.1 200 状态代码。

  • 主机必须发送有效的 GetResponse 消息。

  • GetResponse 消息的 RelatesTo 元素必须存在,并且不能为空。 其值必须与相应 Get 消息中的 MessageId 元素的值匹配。

如果程序发送的 HTTP 请求或元数据交换消息不符合这些流量要求,则已成功识别问题的原因,无需执行进一步的故障排除步骤。 重写程序,使其生成一致的消息和请求,并重新测试程序。

如果仍无法确定问题的根源,请联系 Microsoft 支持人员以获取帮助。 在联系支持人员之前,请收集相应的日志文件,以帮助确定问题的根本原因。 有关详细信息,请参阅 启用 WSDAPI 跟踪

WSDAPI 诊断过程

使用 WSDAPI 故障排除入门

下载 Netmon 和示例 DPWS 筛选器