无法连接到 Windows 商店应用程序中的本地主机

Posted

技术标签:

【中文标题】无法连接到 Windows 商店应用程序中的本地主机【英文标题】:Cannot connect to localhost in windows store application 【发布时间】:2013-07-23 21:11:31 【问题描述】:

当我在整个互联网上阅读时,微软阻止了在 localhost (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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

问题 2 很容易解决,在 Visual Studio 中将应用程序设置为允许“私有网络(客户端和服务器)”在功能(Package.appxmanifest > Capabilities)下,重新部署,一切都很好.

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

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

    转到您的注册表,然后按 CTRL+F 查找您的应用程序(例如,如果它名为 TESTApp1,则将其输入到搜索框中)。 您应该找到一个类似于 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 并在下面找到您的应用程序。

【讨论】:

你知道这在 Windows 周年纪念更新下是否仍然有效吗?隔离豁免在两个方向上是否完全相同,或者它是否允许传出连接(从 UWP 到 localhost)同时阻止传入连接(localhost 到 UWP)?自从周年纪念更新以来,这似乎对我不起作用。 谢谢。这也适用于较新的 Win10 版本。您也可以使用CheckNetIsolation.exe LoopbackExempt -a -n=AppContainerName 代替 SID。

以上是关于无法连接到 Windows 商店应用程序中的本地主机的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 wifi AP 列表并从 Windows 商店应用程序连接到一个 AP

Android设备无法连接到本地主机中的mysql [关闭]

无法使用 JDBC 连接到 docker 中的本地 MySQL

如何让 Visual Studio 连接到 Windows 应用商店?

无法使用 DBeaver 连接到本地主机上的 MariaDB

容器在 Windows Docker 工具箱中的本地主机上不可用