无法从UWP应用程序中看到localhost

Rus*_*sty 16 c# windows localhost uwp

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

无法建立与服务器的连接

var response = await client.GetAsync(BuildGetRequest()).AsTask(source.Token);
Run Code Online (Sandbox Code Playgroud)

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

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

没有任何区别.

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

我的Web API项目在除Edge之外的每个浏览器中运行良好,因此我猜测Edge是一个通用应用程序,问题是相互关联的.当我在Edge中调试它时,我收到此错误:

无法连接到代理服务器

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

嗯,我们无法访问此页面

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

任何人都可以建议我可以尝试让我的UWP应用程序在localhost上查看我的服务吗?

rus*_*tyx 19

这不是一个错误,它是一个称为网络隔离的功能.它是在Windows 8中引入的(Metro应用程序称为Windows运行时应用程序).

出于安全原因,不允许以标准方式安装的UWP应用程序对其安装的设备进行网络调用.

更多细节在这里这里.

可以在Visual Studio调试设置中禁用该功能,还有文章如何允许Windows运行时应用程序的环回谈论使用CheckNetIsolation Windows工具为每个应用程序启用环回访问:

CheckNetIsolation.exe LoopbackExempt -s

CheckNetIsolation.exe LoopbackExempt –a –p=S-1-15-2-4125766819-3228448775-2449327860-2490758337-1264241865-3581724871-2122349299
Run Code Online (Sandbox Code Playgroud)

还有GUI工具,如启用环回实用程序环回免除管理器,使这项任务更容易:

启用环回实用程序

  • 问题是,即使有所有这些,您也无法在UWP应用中使用侦听Socket或StreamSocket来接受来自同一台计算机的连接 (2认同)
  • 现在有一个选项 [UWP 与`localhost` 上的其他应用程序通信](https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-uap4-loopbackaccessrules)。如果你想和一个非打包的人交谈,你仍然需要[移除网络隔离](https://docs.microsoft.com/en-us/previous-versions/windows/apps/jj835817(v=win.10)应用程序。 (2认同)
  • @PeterTorr-MSFT 根据此堆栈帖子,这是不可能的:/sf/ask/3816787131/ (2认同)