簡體   English   中英

IIS 7.5上的ASP.NET Core WebSockets

[英]ASP.NET Core WebSockets on IIS 7.5

我知道WebSocket僅在Windows 8和更高版本上受支持。 但是有時您無法在大型組織中升級系統。 因此,我嘗試在ASP.NET Core應用上實現WebSockets。 我拿了NuGet軟件包“ AspNetCore.WebSockets.Server”,並在Windows 7上作為自托管應用程序運行,並且一切正常。 但是在同一台計算機上的IIS7.5上托管,將不允許我將HTTP連接升級到WebSocket。 即使我嘗試模擬握手,IIS也會簡單地刪除“ Sec-WebSocket-Accept”標頭。

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,則IIS7.5在物理上可以管理WebSocket,並且該行為(標題刪除)看起來像是Microsoft的惡作劇

恐怕您需要IIS 8

隨着Windows Server 2012和Windows 8的發布,Internet 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可以將常規HTTP連接轉換為websocket的二進制通信。 盡管您可以實現自己的東西,但是不能將其掛接到http.sys中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM