在UWP后台任务中使用Web套接字

时间:2018-06-14 14:38:47

标签: c# sockets websocket uwp background

我正在尝试为UWP应用程序制作后台任务。该任务应该由来自Web套接字连接的数据包触发。

我测试了网络套接字,它按预期工作。

要使后台任务正常工作,根据Microsoft后台网络教程(Network communications in the background),必须实例化ControlChannelTrigger,并且必须调用channel.UsingTransport(socket)方法。然后应该调用socket.ConnectAsync(...)

但是,在socket.ConnectAsync(...)之后调用channel.UsingTransport(socket)时,socket.ConnectAsync(...)方法会抛出异常并显示以下消息。

  

HRESULT的异常:0x80072F75

在没有channel.UsingTransport(socket)的情况下调用时,建立的连接没有问题。

为了在后台任务中使用套接字,我必须在调用channel.UsingTransport(socket)后建立连接。

有人能说清楚为什么会出现这种错误吗?

1 个答案:

答案 0 :(得分:1)

请不要在同一设备上安装IIS服务器,并使用localhost连接服务器。请参阅network isolation主题。在官方WebSocket sample中使用服务器时,您可以尝试将服务器文件夹及其子文件夹复制到另一台计算机并运行服务器脚本,然后您可以使用以下IP地址连接服务器:

服务器uri:ws://xxx.xx.xx.xx/WebSocketSample/echowebsocket.ashx

此外,请尝试测试ControlChannelTrigger StreamWebSocket样本。

另见示例中的注释部分:

  

与提供的脚本一起使用时,此Windows应用商店应用示例通过环回与同一台计算机上的另一个进程(桌面应用程序的IIS服务器)进行通信,仅用于演示目的。不允许通过环回与另一个代表Windows应用商店应用的进程通信的Windows应用商店应用,此类应用不会通过商店验证。有关详细信息,请参阅How to configure network isolation capabilities