SignalR mit einem Load Balancer mit ARR betreiben

Bei einem Kunden haben wir einen Load Balancer (Windows 2019 Server) mit IIS und ARR aufgebaut. Dahinter befinden sich zurzeit 3 Webserver (Windows 2019 Server) auch mit IIS.

Bei der Nutzung von SignalR in einer ASP.NET-Core-Webanwendung gab es in der Browser-Konsole Fehlermeldungen à la:

Error during WebSocket handshake: Incorrect ‚Sec-WebSocket-Accept‘ header value

Nach kurzem Googeln bin ich auf diesen Github-Kommentar gestoßen:

Just resolved it by install Websockets on IIS. Go to the Server Manager > Manage > Add Roles and Features > Web Server > Application Development > Websockets.

Das habe ich dann auf dem Load-Balancer-Server auch gemacht:

Websockets installiert.

Anschließend lief das SignalR wieder sauber.

Es muss also sowohl der ARR-Server, als auch die eigentlichen Webserver jeweils die Websockets-Funktionalität im IIS installiert haben.