asp.net核心websockets不同的机器

时间:2016-09-08 15:48:12

标签: .net websocket asp.net-core

我有以下代码来支持服务器端的websockets:

while (webSocket.State == WebSocketState.Open)
{
    var buffer = new ArraySegment<byte>(new byte[4096*1024]);
    WebSocketReceiveResult received;
    try
    {
        received = await webSocket.ReceiveAsync(buffer, CancellationToken.None);
    }
    catch (IOException ex)
    {
        Thread.Sleep(1000);
        continue;
    }
    //process the message
}

在一台计算机上(开发,IISExpress,Windows 10)它运行正常(等待ReceiveAsync直到消息到达),虽然它在暂存环境(Windows Server 2012,IIS)上有点奇怪 - ReceiveAsync不断抛出IOException消息Unexpected end of stream。然而套接字仍然是打开的,我可以重试ReceiveAsync的调用,如果确实有消息它成功并返回消息。任何想法如何在没有可用消息而不是等待消息的情况下找出它抛出异常的原因?

编辑:当我想到它时,我实际上不确定ReceiveAsync是否曾收到过消息(现在无法检查),但我确信浏览器和后端之间的通信正常工作,因此websocket肯定是开放的(我也通过在获得例外后检查国家财产来确认。

1 个答案:

答案 0 :(得分:0)

似乎问题是在IIS上我使用的应用程序池的.NET CLR版本设置为v4.0,而它应该是No Managed Code。