握手期间ASP.NET Core WebSocket失败

时间:2017-03-23 15:38:52

标签: javascript c# asp.net .net websocket

我尝试使用ASP.NET Core WebSocket,但在JavaScript中new WebSocket("ws://localhost:5702");时出现了这样的错误:

WebSocket connection to 'ws://localhost:5702/' failed: Error during WebSocket handshake: Unexpected response code: 200

Startup.cs中的我的配置方法:

public void Configure(IApplicationBuilder app)
{
     app.UseDefaultFiles();

     app.UseStaticFiles();

     app.UseWebSockets();
     app.UseWebSocketHandler();
}

我的Middlewares\WebSocketMiddleware.cs
WebSocketMiddleware.cs

有人知道吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

您遇到的行为是因为其他一些中间件(UseStaticFiles)正在向您的websocket客户端返回200 OK代码。

为避免这种情况,请确保在 UseStaticFiles()之前放置WebSocket中间件。就个人而言,我把它放在顶部,就像这样:

    public void Configure(IApplicationBuilder app)
    {
        //first handle any websocket requests
        app.UseWebSockets();
        app.UseWebSocketHandler();

        //now handle other requests (default, static files, mvc actions, ...)
        app.UseDefaultFiles();
        app.UseStaticFiles();
        //app.UseMvc(...);
    }