不同机器的Asp.net核心websockets不同



我有以下代码来支持服务器端的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直到消息到达),而它在staging环境(Windows Server 2012, IIS)上工作有些奇怪- ReceiveAsync不断抛出IOException与消息Unexpected end of stream。但是套接字仍然打开,我可以重试对ReceiveAsync的调用,如果确实有消息,它成功并返回消息。任何想法,我怎么能找出为什么它抛出异常时,没有可用的消息,而不是只是等待一个?

编辑:当想到它时,我实际上不确定ReceiveAsync是否收到消息(现在无法检查),但我确信浏览器和后端之间的通信工作,因此websocket绝对是打开的(我也通过检查异常后的状态属性来确认)。

似乎问题是,在IIS上,我使用的应用程序池与。net CLR版本设置为v4.0,而它应该是无托管代码。

相关内容

  • 没有找到相关文章

最新更新