Подтвердить что ты не робот

SignalR WebSockets для IIS 7.5

В моем IIS 7.5 мое приложение SignalR всегда использовало длительный опрос. Согласно моему поиску, IIS 7.5 еще не поддерживает WebSockets.

Надеюсь, я пропустил некоторые инструменты или конфигурации, чтобы включить WebSockets в IIS 7.5. Или я не сделал?

4b9b3361

Ответ 1

Здесь приведено краткое описание необходимых шагов настройки для размещения в Windows 2008r2 с помощью IIS 7.5:

обновить файл приложения web.config приложения SignalR, чтобы включить "запустить все управляемые модули для всех запросов" (кратко, это настройка RAMMFAR).

Обновить веб-страницу, использующую SignalR для связи с сервером: Добавьте ссылку на библиотеку json2.js. Добавьте тег, который заставляет контент отображаться в последнем режиме браузера.

Установите Windows Server 2008r2 с IIS 7.5 следующим образом: Установите версию .NET Framework, требуемую вашим приложением SignalR. Создайте сайт и свяжите его с соответствующим пулом приложений.

Обновить приложение Signalr. Файл Web.config

В вашем файле приложения web.config приложения SignalR добавьте параметр RAMMFAR, чтобы включить запуск всех управляемых модулей для всех запросов. Этот параметр потребовался для того, чтобы приложение примера SignalR работало в Windows 2008r2 и IIS 7.5 во всех браузерах.

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
   </modules>
</system.webServer> 

Обновить веб-страницу, использующую SignalR

На веб-странице приложения, использующей SignalR для связи с сервером, добавьте следующий код.

Добавьте ссылку на библиотеку парсеров json2.js JSON. Этот script предоставляет парсер JSON для предыдущих версий браузера, которые его не имеют. Вы можете добавить script одним из двух способов: Добавьте пакет nuGet json2.js в свой проект, а затем укажите его на своей веб-странице:

Или как альтернатива, ссылка json2.js на CDN:

Добавьте следующий тег в раздел главы страницы. Этот тег, в частности значение IE = edge, заставляет Internet Explorer отображать контент в самой последней версии, а не более ранних (например, IE7), которые не позволяют работать с кодом SignalR.

Настройка Windows Server 2008r2 и IIS 7.5

Как уже отмечалось, я построил образец приложения SignalR из учебника Getting Started with SignalR на .NET 4. Это обычный сценарий хостинга для Windows 2008r2 и IIS 7.5. Сервер был новой установкой по умолчанию для Windows Server 2008r2 и IIS 7.5.

Установите требуемую версию .NET Framework. В этом случае я установил .NET Framework 4. Создайте новый сайт в диспетчере IIS и свяжите сайт с пулом приложений. Используйте пулы приложений с интегрированным режимом, классический режим для SignalR не поддерживается. Для этого приложения я использовал пул приложений ASP.NET v4.0.

После выполнения описанных выше шагов настройки мне удалось развернуть версию сервера Getting Started with SignalR на платформе .NET Framework 4, и она отлично работала в IE (версии 8, 9 и 10), Chrome и Firefox, хотя в нем использовались резервные методы транспорта (навсегда фреймы в IE и события, отправленные сервером в других браузерах). Интересная вещь для разработчиков SignalR заключается в том, что помимо вышеуказанных шагов мне не нужно было менять одну строку кода SignalR в любом месте приложения, чтобы сделать эту работу.

Это простой случай, но показывает, что SignalR действительно поддерживает "автоматическое резервное копирование" для более ранних механизмов транспорта, когда поддержка веб-сайтов недоступна на сервере.

Ответ 2

Вы не можете использовать WebSocket для IIS 7.5 (другими словами, для Windows Server 2008 R2 или Windows 7), поскольку для него требуется изменение уровня HTTP.sys AFAIK. Таким образом, вам нужна поддержка IIS 8.0 и Windows Server 2012 или Windows 8 для использования WebSocket. Кроме того, IIS Express 8.0 также поддерживает WebSockect, но вы не можете использовать это, если находитесь в ОС, которая ниже Windows 8 или Windows Server 2012.