从 UWP 应用程序看不到 localhost

Posted

技术标签:

【中文标题】从 UWP 应用程序看不到 localhost【英文标题】:Can't see localhost from UWP app 【发布时间】:2016-04-07 23:16:10 【问题描述】:

我正在笔记本电脑上开发 UWP 应用。在以前的带有预发布 Windows 10 的笔记本电脑上,我能够让我的应用程序在 localhost 上看到我的 Web API 服务,但是在这台笔记本电脑上,无论我尝试什么,我总是使用 HTTP 客户端收到此错误:

无法与服务器建立连接

var response = await client.GetAsync(BuildGetRequest()).AsTask(source.Token);

如果我指向我在 Azure 上发布的服务,一切正常。 这是我尝试过的:

允许的本地网络环回在应用程序的项目属性中设置。 确认在 Fiddler 的 AppContainer Loopback Exemption Utility 中检查了我的应用程序包名称。 在 Package.AppManifest 中设置 Internet(客户端)、Internet(客户端和服务器)、专用网络功能 尝试从命令行手动设置 c:>checknetisolation loopbackexempt -a -n= UWP Enable local network loopback 出于绝望,完全禁用了防火墙。 在完整的 IIS 而不是 IIS Express 中运行我的 Web API。

没什么区别。

我注意到我在 Edge 中遇到了类似的问题,尽管允许在 about:flags 中进行 Localhost 环回以及我在以下位置找到的一些其他建议:

https://social.technet.microsoft.com/Forums/en-US/0face535-3c7a-4658-be34-6c376322ca34/microsoft-edge-cant-open-local-domains

我的 Web API 项目在除 Edge 之外的所有浏览器中都运行良好,所以我猜测 Edge 是一个通用应用程序,问题是相关的。当我在 Edge 中调试它时,我得到了这个错误:

无法连接到代理服务器

如果我转到Settings 并关闭手动代理服务器,再次运行它会得到:

嗯,我们无法访问此页面

我注意到,出于某种原因,手动代理服务器设置在后续运行期间不断重新打开。

谁能建议我可以尝试让我的 UWP 应用在 localhost 上看到我的服务?

【问题讨论】:

我遇到了完全相同的问题,即使 Edge 浏览器无法正常工作。 有解决方案吗?我也面临同样的问题 【参考方案1】:

这不是一个错误,而是一个特性,称为网络隔离。它是在 Windows 8 中引入的(Metro 应用被称为 Windows 运行时应用)。

出于安全原因,安装在标准中的 UWP 应用 方式不允许对其所在的设备进行网络调用 安装在。

更多详情here 和here。

可以在 Visual Studio 调试设置中禁用该功能,文章 How to allow loopback for Windows Runtime apps 也谈到了使用 CheckNetIsolation Windows 工具启用每个应用程序的环回访问:

CheckNetIsolation.exe LoopbackExempt -s

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

还有诸如 Enable Loopback Utility 和 Loopback Exemption Manager 等 GUI 工具可以让这项任务变得更容易:

【讨论】:

问题是,即使所有这些,你也不能在 UWP 应用程序中拥有一个监听 Socket 或 StreamSocket 来接受来自同一台机器的连接 @GeorgeBirbilis 真是糟透了。刚刚在这里找到了一个文档,证实了这一点“此外,Windows 运行时应用程序只能将 IP 环回用作客户端网络请求的目标地址。” msdn.microsoft.com/en-us/windows/hh780593.aspx 有趣的是,如果您使用桌面桥将 Win32 应用程序放在 windows 商店中,如果我没记错的话,它将能够对网络做任何想做的事情 现在有UWP to communicate with other apps on localhost 的选项。你仍然需要[移除网络隔离](docs.microsoft.com/en-us/previous-versions/windows/apps/…如果你想与一个非打包的应用程序对话。 @PeterTorr-MSFT 根据这篇 Stack 帖子,这是不可能的:***.com/questions/54525530/…【参考方案2】:

可能会在未来与项目重聚。

https://github.com/microsoft/ProjectReunion/issues/113

在这张票中强调您的需求。

【讨论】:

以上是关于从 UWP 应用程序看不到 localhost的主要内容,如果未能解决你的问题,请参考以下文章

UWP FullTrustProcessLauncher 在启动时给出“找不到元素”异常

UWP 应用程序错误:“无效的绑定路径‘Application.Current’:在类型‘MainPage’上找不到属性‘Application’”

通过 UWP 和 Visual Studio 运行应用程序时出现 InvalidCharacterError

在 UWP 应用中使用 Catel 转换器

在 C++ 控制台应用程序中使用 UWP 库

从服务中打开 UWP 应用程序