Как настроить IIS 7.5 для SSE (события, отправленные сервером) и SignalR

Я протестировал приложение Asp.NET MVC для запуска SignalR, и оно правильно обрабатывает text/event-stream MIME с подключением serverSentEvents, используя Visual Studio 2012, IIS Express (Microsoft-IIS/8.0) и Chrome.

Теперь, когда я выполняю развертывание в производственной среде (IIS 7.5, .NET Framework 4.5, Windows Server 2008R2), я заметил, что SignalR всегда возвращается к транспорту LongPolling, поскольку истекает время ожидания signalr/connect?transport=serverSentEvents etc.

Есть ли способ настроить Microsoft-IIS/7.5 для работы ServerSentEvents? Или это возможно только на 8.0+?

Когда я пытаюсь получить прямой доступ к URL-адресу 'http://my.webapp.com/MyHub/signalr/connect?transport=serverSentEvents&connectionId=624849a4-45c6-458b-b6d0-f7cb023ab226&connectionData=%5B%7B%22name%22%3A%22myHub%22%7D%5D&tid=2', я получаю файл, который выглядит как пакет данных SSE:

data: initialized

id: 14476
data: {"MessageId":"14476","Messages":[],"Disconnect":false,"TimedOut":false,"TransportData":{}}

поэтому я не уверен, почему тайм-аут соответствует запросу.


person eddo    schedule 29.08.2012    source источник


Ответы (2)


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

Чтобы проверить это, я предлагаю попробовать подключиться к хаб-серверу на сервере, используя localhost в качестве веб-адреса - в моем случае транспорт правильно настроен как serverSentEvents (при использовании Chrome) или foreverFrame (при использовании IE)

Спасибо пользователю dfowler за предупреждение (подробнее здесь)

person eddo    schedule 30.08.2012

Что может происходить из-за того, что сервер сжимает динамический контент, сгенерированный перед его отправкой клиенту. Добавьте это в свой web.config, чтобы исправить

   <location path="signalr">
    <system.webServer>
      <urlCompression doDynamicCompression="false"/>
    </system.webServer>
  </location>
person Asad Durrani    schedule 16.08.2015