0

当我在互联网上阅读时,微软阻止了在本地主机(127.0.0.1)上侦听和接收任何端口的流量的选项。我想开发目的是在本地测试我的 2 个服务器/客户端应用程序。我按照这里的说明进行操作:http: //msdn.microsoft.com/en-us/library/windows/apps/hh780593.aspx

但它不起作用。当我使用调试选项时,我得到:

网络能力状态

InternetClient                Not Used and Insecure
InternetClientServer          Not Used and Insecure
PrivateNetworkClientServer    Not Used and Insecure

详细的交通报告

InternetClient                Not Used and Insecure

InternetClientServer          Not Used and Insecure

PrivateNetworkClientServer    Not Used and Insecure

知道为什么它不起作用吗?

4

2 回答 2

9

我的场景:开发了一个供内部使用的 Windows 应用商店应用程序,在开发机器上运行良好,但是当迁移到另一台机器时,任何 HttpClient 调用都失败了。我在这里遇到了两个问题:

  1. 与本地计算机上的 IIS 通信时 HttpClient 失败

  2. 与本地子网上的远程计算机上的 IIS 通信时,HttpClient 失败

问题 2 是一个简单的解决方法,在 Visual Studio 中将应用程序设置为在功能(Package.appxmanifest > Capabilities)下允许“专用网络(客户端和服务器) ”,重新部署,一切都很好。

问题 1 很难解决。默认情况下,Visual Studio 在 NetIsolation 中添加一个异常,该异常允许和拒绝本地环回/本地主机访问。您需要将您的应用程序作为例外添加到此列表中,但是 OP 中提供的链接中的信息不起作用,我根本无法让命令工作,所以我是这样做的:

(注意确保应用程序安装在您运行它的机器上)

  1. 转到您的注册表,然后按 CTRL+F 查找您的应用程序(例如,如果它名为 TESTApp1,则将其输入到搜索框中)。
  2. 您应该找到一个类似于 guid 后跟名称的注册表项,例如: ac2efce7-a15b-40d0-92db-3abde43a6778_1.0.1.15_neutral__025mzc78q1aqe

获得该名称后,在命令提示符下(以管理员身份,以防万一)运行: CheckNetIsolation.exe LoopbackExempt -s

在输出中,找到您的 GUID。您将在其下方看到 SID,记下此 SID。3) 运行以下命令,在问题机器上输入您的 SID: CheckNetIsolation.exe LoopbackExempt -a -p=SIDHERE

注意:替代步骤 2:您还可以在以下注册表项下找到您的 SID(假设您已安装该应用程序):

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

再次,CTRL+F 并在那里找到您的应用程序。

于 2014-01-17T17:52:37.827 回答
1

我找到的最简单的解决方案是让Fiddler为我设置环回异常。您可以免费下载 Fiddler。安装后,请按照本指南选择要为其授予例外的应用程序。如果您计划使用 HTTPS,请记住还要完成有关证书的步骤。我希望这可以帮助其他人节省一些时间。

于 2015-07-03T06:44:43.600 回答