如何启用环回和排除网络隔离故障(Windows 运行时应用)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

本主题将介绍如何为网络访问启用环回,以及如何解决 Windows 应用商店应用在 Windows 8 中的网络隔离问题。

你需要了解的内容

技术

先决条件

  • 以下信息适用于任何需要进行网络连接的联网或网络感知的 Windows 运行时应用。这会影响采用 JavaScript 编写的应用。这也影响使用 .NET Framework 4.5 以 C#、VB.NET 和 C++ 编写的应用。

网络隔离的诊断工具

CheckNetIsolation.exe 是一个内置的诊断工具,可帮助开发人员测试、诊断需要网络功能的应用,并为这些应用进行故障排除。CheckNetIsolation.exe 是一个获取命令行输入参数的命令行工具。它有两个主要选项:

  • LoopbackExempt
    查看已免除 IP 环回限制且被允许访问环回地址的已安装应用的列表。此选项也允许在测试时为特定应用添加对 IP 环回地址的访问。

  • 调试
    确定应用所使用的已启用功能和未使用的所有已启用功能。 任何未使用的已启用功能都会降低应用的安全性。此选项也可提供有关(可能因意外)断开的网络通信的信息。

CheckNetIsolation.exe 可以在显示帮助消息的同时显示使用情况信息。要显示帮助,请使用下面的示例命令。

CheckNetIsolation -?

某些 CheckNetIsolation.exe 选项要求提供应用名称或应用 ID。在目标计算机上部署了某个应用之后,可以在 c:\Program Files\Applications 文件夹下找到该应用的名称。这是用于启动该应用的名称。这是在使用 Microsoft Visual Studio 2013 时显示的程序包系列名称,代表应用容器。可在下列注册表项下找到该应用 ID。

HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer

为网络访问启用环回

由于受网络隔离限制,使用 IP 环回地址的网络通信无法在 Windows 运行时应用中用于进程间通信(两个不同的应用之间)。使用 IP 环回地址的网络通信允许在同一进程的应用内进行通信。

尽管环回功能对于客户将不可用,但开发人员可能需要使用环回进行测试或调试。例如,某个应用可能需要从 Windows 运行时应用的 Web 服务下载数据。 对于开发而言,开发人员需要在单台本地配置了 Web 服务 (127.0.0.1) 的计算机上测试应用。

注意  仅允许将环回用于开发目的。不允许在 Visual Studio 之外安装的 Windows 运行时应用进行使用。此外,Windows 运行时应用仅可将 IP 环回用作客户网络请求的目标地址。所以,使用 DatagramSocketStreamSocketListener 侦听 IP 环回的 Windows 运行时应用不能接收任何传入数据包。

 

要启用对环回地址的访问,开发人员必须配置网络隔离,以使应用免除环回限制。为了使网络服务接收数据包,还需要由防火墙规则允许 TCP 或 UDP 端口上的侦听器。

在 Visual Studio 中安装和运行的应用将自动注册为已免除环回限制。开发人员可通过运行下面的命令来查看免除应用的列表:

CheckNetIsolation.exe LoopbackExempt -s

开发人员也可以使用 CheckNetIsolation.exe 工具为应用手动添加环回免除。

要使应用免除环回限制,必须提供包的应用 ID。以下示例命令可使应用免除环回限制。

CheckNetIsolation.exe LoopbackExempt –a –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

也可以删除特定应用的环回限制免除。以下示例命令可为同一应用删除环回免除。

CheckNetIsolation.exe LoopbackExempt –d –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

通过 CheckNetIsolation.exe 工具,开发人员还可以根据应用容器的名称使应用免除这些环回限制。 以下示例命令可按应用容器名称使应用免除环回限制。

CheckNetIsolation.exe LoopbackExempt –a –n=stocks_mw26f2swbd5nr

对于使用 .NET Framework 编写的应用,也可以根据应用容器的名称删除这些应用的环回限制免除。以下示例命令可为同一应用删除环回免除。

CheckNetIsolation.exe LoopbackExempt –d –n=stocks_mw26f2swbd5nr

也可以为安装的所有应用删除环回限制免除。以下示例命令可为本地计算机上安装的所有应用删除环回免除。

CheckNetIsolation.exe LoopbackExempt –c

调试网络隔离问题

此调试选项用于生成 应用所用的网络功能 的报告。

使用此调试选项可识别应用是否正在使用应用清单中声明的所有功能。使用此调试选项时,将指示系统跟踪应用正在使用哪一项声明的功能,以及未使用哪些声明的功能。

要使用此调试选项,首先向目标计算机部署应用,并确定应用 ID 和应用名称。然后必须使用提升的权限(以管理员身份运行)来打开 CMD 窗口。以下示例命令可为特定的应用 ID 设置调试选项。

CheckNetIsolation.exe Debug –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299

以下示例命令可根据应用容器的名称为应用设置调试选项。

CheckNetIsolation.exe Debug –n=stocks_mw26f2swbd5nr

设置了调试选项之后,从提升的 CMD 窗口启动应用。你应该执行并测试应用将执行的操作。完成测试且应用仍在运行时,按下 Ctrl-C。摘要报告将显示在 CMD 窗口中,该窗口为每个功能都列出了一个网络功能状态条目,以指明该功能是否已声明,以及该功能是否已被使用。声明了不需要的功能时,摘要报告将指明该功能未被使用(摘要报告称之为“未使用”和“不安全”)。详细的通信报告还会列出用于网络访问的源 IP 地址和目标 IP 地址。

以下文本显示的是启用了额外功能的应用的输出。

Network Isolation Debug Session started.
Reproduce your scenario, then hit Ctrl-C when done.

Summary Report

Network Capabilities Status
----------------------------------------------------------------------
    InternetClient                Not Used and Insecure
    InternetClientServer          Not Used and Insecure
    PrivateNetworkClientServer    Used and Declared


Detailed Traffic Report
----------------------------------------------------------------------

    InternetClient                Not Used and Insecure

----------------------------------------------------------------------

    InternetClientServer          Not Used and Insecure

----------------------------------------------------------------------

    PrivateNetworkClientServer    Used and Declared

------------------------------------------------------------------
       10.195.58.77    10.195.58.78

以下文本显示的是启用了适当功能的应用的输出。

Network Isolation Debug Session started.
Reproduce your scenario, then hit Ctrl-C when done.

Summary Report

Network Capabilities Status
----------------------------------------------------------------------
    PrivateNetworkClientServer    Used and Declared


Detailed Traffic Report
----------------------------------------------------------------------

    PrivateNetworkClientServer    Used and Declared

------------------------------------------------------------------
       10.195.58.77    10.195.58.78

相关主题

添加网络支持

如何配置网络隔离功能

网络连接的故障排除和调试