我知道只有Windows 8和更高版本才支持WebSocket。但有時你不能在大型組織中升級系統。所以我嘗試在ASP.NET Core應用上實現WebSockets。 我將NuGet包「AspNetCore.WebSockets.Server」作爲Windows 7上的自託管應用運行,並且一切正常。但在同一臺機器上的IIS7.5上託管不會允許我升級到WebSocket的HTTP連接。即使我嘗試模擬握手,IIS簡單地刪除了我的「Sec-WebSocket-Accept」標題。IIS 7.5上的ASP.NET Core WebSockets
static async Task Acceptor(HttpContext hc, Func<Task> next)
{
StringValues secWebSocketKey;
if(hc.Request.Headers.TryGetValue("Sec-WebSocket-Key", out secWebSocketKey))
{
hc.Response.StatusCode = 101;
hc.Response.Headers.Clear();
hc.Response.Headers.Add("Upgrade", new StringValues("websocket"));
hc.Response.Headers.Add("Connection", new StringValues("Upgrade"));
// Disappears on client
hc.Response.Headers.Add("Sec-WebSocket-Accept", new StringValues(GetSecWebSocketAccept(secWebSocketKey[0])));
}
await next();
}
我絕對肯定IIS7.5物理可管理的WebSockets,如果他們是由開發商和行爲(頭部刪除)實現像Microsoft使壞