ASP.NET Core WebSocket 在握手期间失败

Jus*_*wan 1 .net javascript c# asp.net websocket

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

WebSocket connection to 'ws://localhost:5702/' failed: Error during WebSocket handshake: Unexpected response code: 200
Run Code Online (Sandbox Code Playgroud)

我的配置方法Startup.cs

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

     app.UseStaticFiles();

     app.UseWebSockets();
     app.UseWebSocketHandler();
}
Run Code Online (Sandbox Code Playgroud)

我的Middlewares\WebSocketMiddleware.cs
WebSocketMiddleware.cs

有人知道吗?

谢谢你。

Sig*_*gge 5

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

为避免这种情况,请确保将 WebSocket 中间件放在 UseStaticFiles()之前。就个人而言,我会把它放在顶部,如下所示:

    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(...);
    }
Run Code Online (Sandbox Code Playgroud)