2016-12-30 16 views
0

WebSocketはWindows 8以上でのみサポートされていることは知っています。しかし、大規模な組織ではシステムをアップグレードできないことがあります。だから私はASP.NETコアアプリケーションでWebSocketを実装しようとしました。 私はNuGetパッケージ "AspNetCore.WebSockets.Server"を使い、Windows 7上で自己ホスト型のアプリケーションとして動作し、すべて正常に動作します。しかし、同じマシン上のIIS7.5でのホスティングでは、WebSocketへのHTTP接続をアップグレードすることはできません。私がハンドシェイクをシミュレートしようとしても、IISは単純に私の「Sec-WebSocket-Accept」ヘッダーを削除します。彼らは開発者とその行動(ヘッダ除去)によって実装された場合、私は間違いなく確かIIS7.5が物理的にWebSocketを管理することができますIIS 7.5のASP.NETコア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(); 
} 

がマイクロソフトから汚いトリックのように見える

答えて

1

私はあなたが必要と怖いは8

をIIS

Windows Server 2012およびWindows 8のリリースでは、インターネット Information Services(IIS)8.0にWebSocket プロトコルのサポートが追加されました。

https://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support

新しいHTTP.sysがWebSocketを用バイナリ通信に通常のHTTP接続を回すことができるものです。独自のものを実装することはできますが、http.sysにフックすることはできません。

関連する問題