使用 WSDAPI 故障排除入门

本故障排除指南包含一组可用于帮助确定应用程序问题原因的 诊断过程 。 成功确定问题原因后,可以应用诊断过程中建议的解决方案来解决问题。

可通过两种方法来确定要使用的诊断过程。 一种方法是转到客户端类型的故障排除页,查看用于对客户端进行故障排除的诊断过程的分步列表。 另一种方法是转到下面的故障排除快速参考,查看显示 WSDAPI 应用程序的常见问题以及用于诊断问题的过程的摘要表。

按客户端类型进行故障排除

以下主题按客户端类型显示相关的诊断过程。 这些主题还演示了与客户端类型关联的消息模式。

故障排除快速参考

下表显示了一些问题,这些问题可能会阻止 WSDAPI 客户端和主机在网络上相互查看以及交换设备元数据。 这些表还显示了要运行的诊断过程,以及用于评估应用程序是否遇到特定问题的条件。

网络环境问题

问题 诊断过程 问题识别
防火墙阻止网络发现流量。 检查适配器和防火墙设置 在防火墙上启用网络发现异常可解决此问题。
特定于应用程序的防火墙异常阻止消息。 检查适配器和防火墙设置 禁用防火墙可以解决问题。 WF.msc 显示特定于应用程序的防火墙规则。
设备不会通过发送 ProbeMatchesResolveMatches 消息来响应 UDP 请求, (不到 4 秒) 。 检查适配器和防火墙设置 禁用防火墙可解决此问题,且在 4 秒内响应的通用主机可成功工作。
应用程序的安全上下文不正确, (即客户端和主机对网络) 没有足够的权限。 将泛型主机和客户端用于 UDP WS-Discovery 或使用 泛型主机和客户端进行 HTTP 元数据交换 设备地址未显示在 WSD 调试客户端输出中。 以管理员身份运行应用程序可解决问题。
IPSec 策略正在阻止消息。 将泛型主机和客户端用于 UDP WS-Discovery 或使用 泛型主机和客户端进行 HTTP 元数据交换 设备地址未显示在 WSD 调试客户端输出中。 无法通过禁用防火墙来解决问题。 在不受任何 IPSec 策略约束的计算机上无法重现此问题。

发现流量问题

问题 诊断过程 问题识别
HelloProbeResolve 消息不会在网络上传输,因为应用程序未正确枚举多播网络接口。 使用 WSD 调试客户端验证多播流量 “Hello”、“探测”或“解决”消息不会显示在 WSD 调试客户端输出中。 数据包不会显示在网络上。 不会为环回接口或其他接口生成数据包。
对于未使用定向发现) 的应用程序,UDP 多播不会将探测消息发送到端口 3702 (。 检查 UDP WS 发现的网络跟踪 检查消息时显示它已发送到错误的端口。
探测消息不包含 Types 元素,或者 Types 元素为空。 检查 UDP WS-Discovery 的网络跟踪 或使用 定向发现检查应用程序的网络跟踪 检查消息显示 Types 元素不存在或为空。
探测消息的 Types 元素不包含主机将响应的类型。 检查 UDP WS-Discovery 的网络跟踪 或使用 定向发现检查应用程序的网络跟踪 检查消息显示 Types 元素包含格式不正确或不正确的值。
不会将 ProbeMatches 消息单播发送到从中发送探测的 UDP 端口。 检查 UDP WS-Discovery 的网络跟踪 或使用 定向发现检查应用程序的网络跟踪 检查输出显示未发送 任何 ProbeMatches) 消息,或者消息已发送到错误的端口。 注意: 对于使用定向发现的应用程序,必须通过 HTTP 或 HTTPS 发送 ProbeMatches 以响应 探测 消息。
ProbeMatches 消息不包含 RelatesTo 元素,或者 RelatesTo 元素为空。 检查 UDP WS-Discovery 的网络跟踪 或使用 定向发现检查应用程序的网络跟踪 检查消息显示 RelatesTo 元素不存在或为空。
ProbeMatches 消息中 RelatesTo 元素的值与相应探测消息中的 MessageId 元素的值不匹配。 检查 UDP WS-Discovery 的网络跟踪 或使用 定向发现检查应用程序的网络跟踪 检查消息显示 RelatesTo 元素包含格式不正确或不正确的值。
ProbeMatches 消息中包含的 XAddrs 元素不符合 XAddr 验证规则 检查 UDP WS-Discovery 的网络跟踪 或使用 定向发现检查应用程序的网络跟踪 检查消息显示 XAddrs 无效。
对于不使用定向发现) 的应用程序,UDP 多播不会将解析消息发送到端口 3702 (。 检查 UDP WS-Discovery 的网络跟踪 或使用 定向发现检查应用程序的网络跟踪 检查输出后,发现 Resolve 消息已发送到错误的端口。
ResolveMatches 消息未单播发送到发送 Resolve 消息的 UDP 端口。 检查 UDP WS-Discovery 的网络跟踪 或使用 定向发现检查应用程序的网络跟踪 检查输出显示未发送 ResolveMatches 消息,或者消息已发送到错误的端口。

元数据交换问题

问题 诊断过程 问题识别
主机播发的传输地址错误。 使用通用主机和客户端进行 HTTP 元数据交换 检查 WSD 调试客户端输出中的 XAddrs 会显示传输地址错误或格式不正确。
无法为元数据交换建立 TCP 连接。 检查 HTTP 元数据交换的网络跟踪 数据包分析器的输出不显示以下数据包交换:
  • 从客户端发送的 TCP SYN 数据包
  • 从主机发送的 TCP SYN/ACK 数据包
  • 从客户端发送的 TCP ACK 数据包
客户端未发送有效的 HTTP GET 请求。 检查 HTTP 元数据交换的网络跟踪 数据包分析器输出中没有 HTTP GET 请求,或者请求格式不正确。
客户端未发送有效的 WS-Transfer Get 消息。 检查 HTTP 元数据交换的网络跟踪 数据包分析器输出中没有 WS-Transfer 获取 消息,或者消息格式不正确。
主机未侦听 HTTP GET 请求中指定的 URL 路径。 检查 HTTP 元数据交换的网络跟踪 数据包分析器输出中没有 HTTP 响应。
WS-Transfer Get 消息不包含 To 元素,或者 To 元素为空。 检查 HTTP 元数据交换的网络跟踪 检查消息显示 To 元素不存在或为空。
WS-Transfer Get 消息的 To 元素的值与主机的终结点地址之一不匹配。 检查 HTTP 元数据交换的网络跟踪 检查消息表明,To 元素的值与主机的 ProbeMatches 或 ResolveMatches 消息中播发的终结点地址之一不匹配。
主机未发送有效的 HTTP 响应标头。 检查 HTTP 元数据交换的网络跟踪 数据包分析器输出中没有 HTTP 响应,或者请求格式不正确。
主机发送的 HTTP 响应标头指示请求无法完成。 检查 HTTP 元数据交换的网络跟踪 响应标头具有 HTTP/1.1 200 以外的状态代码。
主机未发送有效的 GetResponse 消息。 检查 HTTP 元数据交换的网络跟踪 数据包分析器输出中没有 GetResponse 消息,或者消息格式不正确。
GetResponse 消息不包含 RelatesTo 元素,或者 RelatesTo 元素为空。 检查 HTTP 元数据交换的网络跟踪 检查消息显示 RelatesTo 元素不存在或为空。
GetResponse 消息中的 RelatesTo 元素的值与相应 Get 消息中的 MessageId 元素的值不匹配。 检查 HTTP 元数据交换的网络跟踪 检查消息显示 RelatesTo 元素包含格式不正确或不正确的值。

WSDAPI 故障排除指南