环回隔离删除不适用于UWP App

时间:2019-02-04 22:54:53

标签: c# .net uwp loopback

因此我在UWP中设置了一个简单的meta http-equiv="content-type" content="text/html; charset=UTF-8"

StreamSocketListener

然后,我使用从软件包清单的gui中获得的软件包系列名称将其添加到我的应用清单中。

    StreamSocketListener listener = new StreamSocketListener();
    public async void StartServer()
    {
        await listener.BindServiceNameAsync("8282");
        listener.ConnectionReceived +=  async (s, a) =>
        {
            using (var output = a.Socket.OutputStream)
            {
                using (var response = output.AsStreamForWrite())
                {
                    var html = Encoding.UTF8.GetBytes(
                    $"<html><head><title>Background Message</title></head><body>Hello from the background process!<br/></body></html>");
                    using (var bodyStream = new MemoryStream(html))
                    {
                        var header = $"HTTP/1.1 200 OK\r\nContent-Length: {bodyStream.Length}\r\nConnection: close\r\n\r\n";
                        var headerArray = Encoding.UTF8.GetBytes(header);
                        await response.WriteAsync(headerArray,
                                                  0, headerArray.Length);
                        await bodyStream.CopyToAsync(response);
                        await response.FlushAsync();
                    }
                }
            }
        };
    }

我进去并设置了适当的功能

  <Extensions>
    <uap4:Extension Category="windows.loopbackAccessRules">
      <uap4:LoopbackAccessRules>
        <uap4:Rule Direction="out" PackageFamilyName="<my package fam name>" />
        <uap4:Rule Direction="in" PackageFamilyName="<my package fam name>" />
      </uap4:LoopbackAccessRules>
    </uap4:Extension>
  </Extensions>

最后,我通过<Capability Name="privateNetworkClientServer"/> <Capability Name="internetClientServer"/> <uap3:Capability Name="remoteSystem"/> <Capability Name="internetClient"/> 启用了环回功能,如本帖子UWP Enable local network loopback

所示

但是,只能从网络上的其他设备访问我的Web服务器。如果我

,它将无法连接
  • 连接到我的Intranet ip:8282
  • 连接到本地主机:8282
  • 连接到127.0.0.1:8282

我尝试通过具有代理服务器的Chrome,Firefox,FireFox连接并卷曲

我运行了checknetisolation,可以看到端口已打开

netstat -ano | FIND "8282"

我也尝试运行 TCP 0.0.0.0:8282 0.0.0.0:0 LISTENING 5920 TCP [::]:8282 [::]:0 LISTENING 5920 ,但输出中没有真实信息

checknetisolation debug -n=<my package fam name>

我不知道该去哪里

1 个答案:

答案 0 :(得分:1)

你是对的。为了使这一点更加清楚,请参阅此doc for enable loopback part。您将在其中看到以下评论:

“此外,Windows运行时应用程序只能将IP回送用作客户端网络请求的目标地址。因此,可以防止使用DatagramSocket或StreamSocketListener侦听IP回送地址的Windows运行时应用接收任何传入包。”