What does "WebSocket upgrade request failed" exception mean in a context of Web sockets?

iis-8, wcf, websocket

Solution

It means the HTTP server does not support WebSockets on that URL. During a WebSocket negotiation, a standard HTTP 1.1 `GET` request is sent to the server with a special `Upgrade: websocket` header to let the server know that the client wants the connection to use a WebSocket and not HTTP. If the server supports WebSockets, and the request headers are valid, the server is required to send a `101` reply to let the client know that the server is switching the connection over to a WebSocket for the duration of the connection. Any other reply other than a 3xx redirect means means the server does not recognize or allow the `Upgrade` request on that URL.

Problem

When trying to use WCF with `NetHttpBinding` on IIS 8 Express, the following `WebSocketException` is thrown on client side when the client attempts to connect: WebSocket upgrade request failed. Received response status code '200 (OK)', expected: '101 (SwitchingProtocols)'. Google Search is not helpful. What could be the cause of this error?

Original source