2016-12-30 159 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使坏

回答