我创建了一个 Edge 浏览器扩展,它使用原生消息传递到通过桌面桥技术运行的原生应用程序。我使用SecureInput作为示例,其中包含 Edge 扩展、UWP 主机和 Win32 桌面桥应用程序。
我需要 Win32 桌面桥应用程序来使用 HTTP 和 WebSocket 连接到 Web 服务,因此我在包清单中添加了一个internetClientServer
和一个privateNetworkClientServer
功能,除了已经存在的功能runFullTrust
。
Win32 桌面桥应用程序激活得很好,它能够使用 HTTP 连接到 Web 服务器。但是一旦它尝试打开 WebSocket 连接,BackgroundTaskInstance
UWP 主机上的 就会收到一个取消请求,BackgroundTaskCancellationReason.SystemPolicy
原因是,桌面桥应用程序将关闭。不幸的是,文档BackgroundTaskCancellationReason.SystemPolicy
并没有解释取消请求的真实原因。
我尝试使用两个 WebSocket 类: theSystem.Net.WebSockets.ClientWebSocket
和 the Windows.Networking.Sockets.MessageWebSocket
,结果相同。没有花哨的代码,只是普通的
var socket = new MessageWebSocket();
...
await socket.ConnectAsync(new Uri("wss://127.0.0.1:9001/myservice"));
其他 WS 客户端可以使用相同的 WebSocket 服务端点,所以我想这里没有服务器/防火墙/防病毒问题。
我还使用了该CheckNetIsolation
工具,为 Edge 浏览器和包添加了环回豁免,但没有任何效果。HTTP 在没有环回豁免的情况下工作正常。
取消任务的真正原因可能是什么,有什么可能的方法来防止它?