我有一个使用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
。
因此,questin是:IIS 8托管的Web核心是否支持websockets,如果有,我需要做些什么才能启用它?
答案 0 :(得分:1)
好吧,我已经发现HWC 确实支持 WebSockets,因为IIS Express 8确实如此,而且它基本上是HWC的包装器。之后我检查了IIS Express applicationhost.config
,发现有一些我错过的东西。
我对HWC applicationhost.config
所做的更改的完整列表如下所示:
<section name="webSocket" overrideModeDefault="Deny" />
元素添加到<sectionGroup name="system.webServer">
<configSections>
<webSocket />
元素添加到<system.webServer>
<add name="WebSocketModule" image="%windir%\System32\inetsrv\iiswsock.dll" />
元素添加到<globalModules>
<add name="WebSocketModule" lockItem="true" />
元素添加到<modules>
之后,Websockets就像魅力一样。