WebSockets Server .NET Core — IsWebSocketRequest всегда возвращает false

Я использую то, что считаю довольно стандартным кодом в .NET Core для реализации сервера веб-сокетов:

if (ctx.Request.Path == "/api/v1/sometest")
    {
        if (ctx.WebSockets.IsWebSocketRequest)
        {
            WebSocket wsSock = await ctx.WebSockets.AcceptWebSocketAsync();

Но я никогда не могу установить сеанс, потому что IsWebSocketRequest всегда равен нулю.

Я вижу заголовки Connection: Upgrade и Upgrade: websocket...

Я знаю, что, должно быть, что-то упускаю, но не знаю, что... Просканировал исходный код github dotnet, чтобы узнать, смогу ли я понять это таким образом, но пока не удалось найти решение.

Я использую Windows 10 Kestrel VS Code .NET Core 3.1.


person James Scott    schedule 01.02.2021    source источник


Ответы (1)


У меня были AddWebSockets в Startup.ConfigureServices, НО я забыл также включить промежуточное ПО в Startup.Configure. Вызовите здесь app.UseWebSockets, чтобы зарегистрировать промежуточное ПО в вашей цепочке.

person James Scott    schedule 02.02.2021