Поделиться через


WebSocketModule не загружается при использовании WebSockets с WCF 4.5 или ASP.NET в IIS 8.0

Эта статья поможет устранить ошибку (WebSocketModule не загружается), которая возникает, когда функция протокола WebSocket не включена в Microsoft IIS (IIS) 8.0.

Исходная версия продукта: службы IIS 8.0, ASP.NET на платформа .NET Framework 4.5.2
Исходный номер базы знаний: 2778043

Симптомы

Следующее сообщение об ошибке возникает при попытке взаимодействия со службой Windows Communication Foundation (WCF), настроенной с NetHttpBinding (для WebSockets) или веб-сайта ASP.NET через протокол WebSockets при размещении в IIS 8.0:

WebSocketModule не загружается. Проверьте, установлен ли компонент WebSocket, и webSocketModule включен в списке модулей IIS (см https://go.microsoft.com/fwlink/?LinkId=231398 . дополнительные сведения).

Причина

Эта проблема может возникнуть, если функция протокола WebSocket не включена в IIS 8.0.

Решение

Чтобы устранить эту проблему, включите функцию протокола WebSocket в IIS 8.0. Для этого выберите один из следующих вариантов:

  1. В командной строке администратора выполните следующую команду:

    %SystemRoot%\system32\dism.exe /online /enable-feature /featurename:IIS-WebSockets
    
  2. Чтобы включить функцию протокола WebSocket с помощью пользовательского интерфейса в Windows 8, перейдите к разделу панель управления> Programs>Включение или отключение> функций Windows службы IIS> World Wide Web Services>Application Development>Feature WebSocket Protocol.

  3. Чтобы включить функцию протокола WebSocket с помощью пользовательского интерфейса в Windows Server 2012, перейдите к протоколу >Web Server Web Server (IIS)>Web Server>Development>WebSocket Protocol.

  4. Чтобы включить функцию протокола WebSocket с помощью задачи запуска в Azure:

    • Создайте файл Startup.cmd со следующей командой в проекте облачной службы:

      %SystemRoot%\system32\dism.exe /online /enable-feature /featurename:IIS-WebSockets
      
    • Задайте для действия сборки значение None и установите для копирования в выходной каталог, чтобы скопировать always on this Startup.cmd file.

    • Добавьте следующее в файл ServiceDefinition.csdef :

    <Startup>
        <Task commandLine="Startup.cmd"
        executionContext="elevated" taskType="simple"/>
    </Startup>