0

我有一个使用 ASP.NET 4.5 的新 WebSocket 功能的 Web 应用程序。我有一个自定义处理程序,它执行以下操作:

public class WebsocketHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        if (context.IsWebSocketRequest)
        {
            context.AcceptWebSocketRequest(WebSocketRequest);
        }
    }

    public bool IsReusable { get { return false; } }

    private async Task WebSocketRequest(AspNetWebSocketContext context)
    {
         //Processing
    }
}

当我在 IIS 8 上托管我的应用程序时,这很有效,但是当我在 IIS 托管的 Web 核心中运行此应用程序时,IsWebSocketRequest属性始终为fasle.

所以,问题是:IIS 8 托管的 Web 核心是否支持 websockets,如果支持,我需要做什么来启用它?

4

1 回答 1

1

好吧,我发现 HWC确实支持WebSockets,因为 IIS Express 8 确实支持 WebSockets,它基本上是 HWC 的包装器。之后,我检查了 IIS Express applicationhost.config,发现那里有一些我错过的东西。

applicationhost.config为启用 Websockets 支持而对 HWC 所做的更改的完整列表如下:

  • <section name="webSocket" overrideModeDefault="Deny" />元素添加到<sectionGroup name="system.webServer">of<configSections>
  • <webSocket />元素添加到<system.webServer>
  • <add name="WebSocketModule" image="%windir%\System32\inetsrv\iiswsock.dll" />元素添加到<globalModules>
  • <add name="WebSocketModule" lockItem="true" />元素添加到<modules>

在那之后,Websockets 就像一个魅力。

于 2013-08-15T09:56:29.133 回答