2016-12-30 135 views
0

我知道只有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使壞

回答