检查适配器和防火墙设置

配置错误的防火墙可能会导致 WSD 应用程序失败。 本主题提供一些在 WSD 客户端和主机无法在网络上相互看到时使用的故障排除过程。 在使用任何其他应用程序故障排除过程之前,应检查防火墙设置。

检查适配器和防火墙设置

  1. 验证是否已启用 网络发现 异常。

  2. 检查是否有特定于应用程序的防火墙规则阻止应用程序。

  3. 显式启用用于发现和元数据交换的端口。

  4. 禁用防火墙并重新测试应用程序。

    注意

    完成此步骤后,应重新启用防火墙。

     

验证是否已启用网络发现异常

如果正在运行任何WS-Discovery应用程序,则必须允许 网络发现 防火墙例外。

启用网络发现防火墙例外

  1. 单击“ 开始”,单击“ 运行”,然后键入 firewall.cpl。 这将打开“Windows 防火墙控制面板”小程序。
  2. 选择 “允许程序通过 Windows 防火墙”。
  3. 在“异常”选项卡上,选择“网络发现检查” 框。
  4. 单击“确定”关闭防火墙小程序。

更改此防火墙后重新测试程序。 如果程序现在成功运行,则问题原因已确定,无需进一步的故障排除步骤。 否则,请继续执行下一步。

检查应用程序特定的防火墙规则

Windows 防火墙的高级配置可以在名为“ 高级安全 Windows 防火墙”的 Microsoft 管理控制 (MMC) 管理单元中进行。 此管理单元可用于排查可疑的防火墙问题。

开发人员可以使用 具有高级安全 API 的 Windows 防火墙 来创建适用于其 WSD 应用程序的防火墙规则。 具体而言,INetFwRules 接口的 Add 方法可用于添加新的防火墙规则。 如果防火墙规则创建不正确,客户端和主机可能无法在网络上相互查看。

为应用程序特定的防火墙规则检查

  1. 单击 “开始”,单击“ 运行”,然后键入 wf.msc
  2. 查找可能阻止流量的应用程序特定规则。 有关详细信息,请参阅 具有高级安全性的 Windows 防火墙 - 诊断和故障排除工具
  3. 删除特定于应用程序的规则。

如果未找到特定于应用程序的规则,请继续执行下一步。 如果找到并删除了特定于应用程序的规则,请在更改防火墙后重新测试程序。 如果程序现在成功运行,则问题原因已确定,无需进一步的故障排除步骤。 否则,请继续执行下一步。

启用用于发现和元数据交换的端口

WS-Discovery使用 UDP 端口 3702 进行消息交换。 此外,TCP 端口 5357 和 5358 有时用于元数据交换。 可以使用“在 Windows 防火墙中打开端口”中所述的过程在防火墙上显式打开这些端口。

更改此防火墙后重新测试程序。 如果程序现在成功运行,则问题原因已确定,无需进一步的故障排除步骤。 否则,请继续执行下一步。

禁用防火墙

可以禁用 Windows 防火墙来帮助排查疑似问题。 出于故障排除目的,还可以禁用其他适用的防火墙 (,例如路由器) 上的防火墙。 有关启用或禁用 Windows 防火墙的信息,请参阅 打开或关闭 Windows 防火墙

禁用任何适用的防火墙后重新测试应用程序。 如果程序现在成功运行,则防火墙正在阻止流量。 流量受阻有几个可能的原因。

  • 特定于应用程序的异常阻止了流量。 如上所述,检查特定于应用程序的防火墙规则。
  • 设备花费的时间太长,无法响应 UDP 请求。 Windows 防火墙可能会阻止在发送初始请求后超过 4 秒返回的 UDP 响应。 按照 使用泛型主机和客户端进行 UDP WS-Discovery 中提供的过程继续故障排除,以查看问题是否在 4 秒内响应的主机中重现。

如果禁用防火墙后应用程序仍然失败,则防火墙不会导致应用程序失败。 按照为 UDP WS-Discovery 使用通用主机和客户端中提供的过程,重新启用防火墙并继续进行故障排除。

在故障排除完成后,应始终重新启用防火墙。

WSDAPI 诊断过程

使用 WSDAPI 故障排除入门