将通用主机和客户端用于 HTTP 元数据Exchange

如果客户端和主机无法交换元数据,则可以将通用主机和客户端替换为自定义主机和客户端,以帮助解决问题。 如果设备地址或设备元数据未显示在 WSD 调试客户端输出中,则提供的传输地址或网络环境可能会导致故障。 有关泛型主机和客户端的详细信息,请参阅 调试工具

如果已验证泛型主机和客户端是否可以完成WS-Discovery和 HTTP 元数据交换,则可以跳过此诊断过程,并按照 使用 WinHTTP 日志记录验证流量中的过程继续进行故障排除。

如果主机或客户端是电脑上运行的应用程序,则应在与实际主机或客户端相同的安全上下文中运行通用主机或客户端。 例如,如果实际主机或客户端以管理员身份运行,则泛型主机或客户端必须以管理员身份运行。 此外,如果主机或客户端是独立设备,则应完全替换为在安全上下文中运行泛型主机或客户端的电脑,从而保证无限的网络访问 ((例如,以管理员) 运行)。

使用通用主机和客户端对 HTTP 元数据交换进行故障排除

  1. 打开命令提示符窗口。

  2. 运行以下命令: WSDDebug_host.exe /mode metadata /start

    注意

    可能会显示Windows 安全中心“警报”对话框。 如果是这样,请单击“ 取消阻止 ”以允许 WSD 调试主机运行。

     

    此命令生成类似于以下内容的输出。 记下设备 ID。

    WSDAPI Debug Host
    Copyright (C) Microsoft Corporation 2007.  All rights reserved.
    Device ID is urn:uuid:37f86d35-e6ac-4241-964f-1d9ae46fb366
    Host metadata>
    
  3. 运行以下命令: WSDDebug_client.exe /mode metadata /hello off /resolveid<>。 将 ID> 替换为<步骤 2 中标识的设备 ID。

    注意

    可能会显示Windows 安全中心“警报”对话框。 如果是这样,请单击“ 取消阻止 ”以允许 WSD 调试客户端运行。

     

WSD 调试客户端生成类似于以下内容的输出。

WSDAPI Debug Client
Copyright (C) Microsoft Corporation 2007.  All rights reserved.
Client ID is urn:uuid:0f571af7-6b0e-4daf-8054-f2233ac27910
Hello mode is disabled
Client metadata>
*****************************************************************************
Add at 02/28/07 15:16:51
+ EPR:
  + Address:                 urn:uuid:37f86d35-e6ac-4241-964f-1d9ae46fb366
+ Types:
    (wsdp) https://schemas.xmlsoap.org/ws/2006/02/devprof:Device
+ XAddrs:
  https://[::1]:5357/37f86d35-e6ac-4241-964f-1d9ae46fb366
+ Metadata version:          2
+ Instance ID:               1
+ Probe/Resolve tag:         WSDAPI debug_client
+ Remote transport address:  [::1]:3702
+ Local transport address:   ::1
+ Local interface GUID:      42133cd4-6a70-11db-bbc9-806e6f6e6963
Client metadata>
*****************************************************************************
Getting metadata for host at 02/28/07 15:16:51:
+ Endpoint reference:
  + Address:
    urn:uuid:37f86d35-e6ac-4241-964f-1d9ae46fb366
Using xAddr: https://[::1]:5357/37f86d35-e6ac-4241-964f-1d9ae46fb366
Client metadata>
*****************************************************************************
Metadata for host:
+ Endpoint reference:
  + Address:           urn:uuid:37f86d35-e6ac-4241-964f-1d9ae46fb366
Metadata section:
  + Dialect:
    https://schemas.xmlsoap.org/ws/2006/02/devprof/ThisDevice
  + Friendly name:
    [no lang]: Debugging Host
  + Firmware version:  1.0
  + Serial number:     00000000
Metadata section:
  + Dialect:
    https://schemas.xmlsoap.org/ws/2006/02/devprof/ThisModel
  + Manufacturer:
    [no lang]: Microsoft Corporation
  + Manufacturer URL:  https://www.microsoft.com/
  + Model names:
    [no lang]: Microsoft Debugging Host
  + Model number:      https://www.microsoft.com/
End of metadata
Client metadata>

WSD 调试客户端可能会在具有许多 DPWS 设备的网络上生成大量输出。 输出可以重定向到文件,以便更轻松地进行分析。 在 WSD 调试客户端提示符处键入日志 teefilename<>,以将输出重定向到文件。 可以通过在 WSD 调试客户端提示符处键入 日志发球停止来 停止输出重定向。

记下终结点引用 (EPR) 地址。 此 EPR 地址应与上述步骤 2 中标识的设备 ID 匹配。 此外,请验证 WSD 调试客户端是否完全打印了设备的元数据。 设备元数据以 Metadata for host 以结尾 End of metadata

如果设备 ID 和设备元数据在 WSD 调试客户端输出中正确显示,则应用程序故障可能与提供的传输地址、操作系统或网络环境无关。 将通用主机和客户端替换为自定义主机和客户端,并按照 使用 WinHTTP 日志记录验证流量的过程继续进行故障排除。

如果设备地址和设备元数据未显示在 WSD 调试客户端输出中,则失败可能具有以下一个或多个原因:

  • 主机播发的传输地址不正确或格式不正确。 WSD 调试客户端尝试从 ProbeMatchesResolveMatches 消息的 XAddrs 元素中提供的 URL 获取设备元数据。 用于元数据交换的 URL 显示在 WSD 调试客户端输出中,以短语 Using xAddr为前缀。 以下示例显示了用于上述 WSD 调试客户端输出中元数据交换的 XAddrs。

    Using xAddr: https://[::1]:5357/37f86d35-e6ac-4241-964f-1d9ae46fb366
    

    如果提供的 XAddrs 不符合 XAddr 验证规则,则 WSD 调试客户端无法获取设备的元数据。

  • 应用程序在错误的安全上下文中运行。 验证应用程序是否使用正确的凭据,并且客户端和主机是否有足够的权限访问网络。

  • 防火墙配置错误。 按照检查适配器和防火墙设置中的说明验证Windows防火墙设置是否正确,并且没有其他规则删除数据包。 客户端和主机也可以复制到“原始”计算机上, (一台具有从未加入域) 的默认操作系统安装,以尝试重现故障。

  • IPSec 策略正在阻止应用程序。 将客户端和主机复制到不受 IPSec 策略约束的计算机,并尝试重现故障。

WSDAPI 诊断过程

使用 WSDAPI 故障排除进行入门