[英]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.