环回隔离拆除工作不适合UWP应用

问题描述 投票:0回答:1

所以我设置一个简单的StreamSocketListener在我UWP

    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"/>

最后,我启用了环回checknetisolation为显示在这个岗位UWP Enable local network loopback

然而,我的网络服务器是从我的网络上的其他设备才能访问。这将无法连接,如果我

  • 连接到我的内网IP:8282
  • 连接到localhost:8282
  • 连接到127.0.0.1:8282

我试图通过Chrome,火狐,火狐连接使用代理它,和卷曲

我跑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>但在输出中没有真正的信息

Summary Report

Network Capabilities Status
----------------------------------------------------------------------
    InternetClient                Not Used and Insecure
    InternetClientServer          Not Used and Insecure
    PrivateNetworkClientServer    Not Used and Insecure


Detailed Traffic Report
----------------------------------------------------------------------

    InternetClient                Not Used and Insecure

 ------------------------------------------------------------------


    InternetClientServer          Not Used and Insecure

 ------------------------------------------------------------------


    PrivateNetworkClientServer    Not Used and Insecure

 ------------------------------------------------------------------

OK.

我在哪里走了亏损

c# .net uwp loopback
1个回答
1
投票

你是对的。而为了让这更清楚,请参阅本doc for enable loopback part。在那里你会看到如下意见:

“此外,一个Windows运行时应用程序可以使用IP回送仅作为目标地址用于客户端网络请求。因此,使用一个DatagramSocket或StreamSocketListener一个Windows运行时应用上的IP回送从收到任何传入的数据包防止地址听”。

© www.soinside.com 2019 - 2024. All rights reserved.