在 IIS 8.0 中将 WebSocket 与 WCF 4.5 或 ASP.NET一同使用时,不会加载 WebSocketModule
04/15/2020
本文内容
本文帮助您解决在 (IIS) 8.0 中未启用 WebSocket 协议功能时) WebSock Microsoft Internet Information Services (etModule 未加载错误。
原始产品版本: Internet Information Services 8.0,ASP.NET .NET Framework 4.5.2 上
原始 KB 编号: 2778043
症状
当您尝试与 Windows Communication Foundation (WCF) (服务进行通信(如果托管在 IIS 8.0 中时)通过 WebSockets) ) 或 ASP.NET 网站配置的 Windows Communication Foundation (WCF) 服务发生 NetHttpBinding :
未加载 WebSocketModule。 检查是否安装了 WebSocket 功能,并且 IIS 模块列表中是否启用了 WebSocketModule, (查看详细信息 https://go.microsoft.com/fwlink/?LinkId=231398) 。
原因
如果未在 IIS 8.0 中启用 WebSocket 协议功能,可能会出现此问题。
解决方案
若要解决此问题,请启用 IIS 8.0 中的 WebSocket 协议功能。 为此,请选择以下选项之一:
从管理命令提示符处,运行以下命令:
%SystemRoot%\system32\dism.exe /online /enable-feature /featurename:IIS-WebSockets
若要使用 Windows 8 上的 UI 启用 WebSocket协议功能,请导航到"控制面板程序"打开或关闭 Internet Information Services World Wide Web Services 应用程序开发功能 > > > > > > WebSocket 协议。
若要使用 Windows Server 2012 上的 UI 启用 WebSocket 协议功能,请导航到"服务器角色 Web 服务器 (IIS) Web Server 应用程序开发 > > > > WebSocket 协议"。
若要使用 Azure 中的启动任务启用 WebSocket 协议功能,
在云服务项目中,使用以下命令创建 Startup.cmd 文件:
%SystemRoot%\system32\dism.exe /online /enable-feature /featurename:IIS-WebSockets
将 "生成****操作"设置为"无",将"复制到 输出目录" 设置为在此 Startup.cmd 文件中"始终复制"。
在 ServiceDefinition.csdef 文件中添加 以下内容:
executionContext="elevated" taskType="simple"/>