使用 WSDAPI 故障排除入门
本故障排除指南包含一组可用于帮助确定应用程序问题原因的 诊断过程 。 成功确定问题原因后,可以应用诊断过程中建议的解决方案来解决问题。
可通过两种方法来确定要使用的诊断过程。 一种方法是转到客户端类型的故障排除页,查看用于对客户端进行故障排除的诊断过程的分步列表。 另一种方法是转到下面的故障排除快速参考,查看显示 WSDAPI 应用程序的常见问题以及用于诊断问题的过程的摘要表。
按客户端类型进行故障排除
以下主题按客户端类型显示相关的诊断过程。 这些主题还演示了与客户端类型关联的消息模式。
- 使用定向发现对 WSDAPI 应用程序进行故障排除
- 对函数发现客户端进行故障排除
- 排查我附近的人员/我附近的会议
- “添加打印机向导”疑难解答
- 网络资源管理器疑难解答
- 投影仪向导疑难解答
- 对其他 WSDAPI 应用程序进行故障排除
故障排除快速参考
下表显示了一些问题,这些问题可能会阻止 WSDAPI 客户端和主机在网络上相互查看以及交换设备元数据。 这些表还显示了要运行的诊断过程,以及用于评估应用程序是否遇到特定问题的条件。
网络环境问题
问题 | 诊断过程 | 问题识别 |
---|---|---|
防火墙阻止网络发现流量。 | 检查适配器和防火墙设置 | 在防火墙上启用网络发现异常可解决此问题。 |
特定于应用程序的防火墙异常阻止消息。 | 检查适配器和防火墙设置 | 禁用防火墙可以解决问题。 WF.msc 显示特定于应用程序的防火墙规则。 |
设备不会通过发送 ProbeMatches 或 ResolveMatches 消息来响应 UDP 请求, (不到 4 秒) 。 | 检查适配器和防火墙设置 | 禁用防火墙可解决此问题,且在 4 秒内响应的通用主机可成功工作。 |
应用程序的安全上下文不正确, (即客户端和主机对网络) 没有足够的权限。 | 将泛型主机和客户端用于 UDP WS-Discovery 或使用 泛型主机和客户端进行 HTTP 元数据交换 | 设备地址未显示在 WSD 调试客户端输出中。 以管理员身份运行应用程序可解决问题。 |
IPSec 策略正在阻止消息。 | 将泛型主机和客户端用于 UDP WS-Discovery 或使用 泛型主机和客户端进行 HTTP 元数据交换 | 设备地址未显示在 WSD 调试客户端输出中。 无法通过禁用防火墙来解决问题。 在不受任何 IPSec 策略约束的计算机上无法重现此问题。 |
发现流量问题
问题 | 诊断过程 | 问题识别 |
---|---|---|
Hello、 Probe 或 Resolve 消息不会在网络上传输,因为应用程序未正确枚举多播网络接口。 | 使用 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 元数据交换的网络跟踪 | 数据包分析器的输出不显示以下数据包交换:
|
客户端未发送有效的 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 元素包含格式不正确或不正确的值。 |