Веб-приложение Azure: веб-сокеты прерываются через 100 секунд

Я пишу приложение для веб-сокетов, которое собираюсь разместить в облаке с помощью веб-приложения Azure.

Веб-сокет реализован с использованием довольно стандартного компонента промежуточного программного обеспечения Owin и полностью функционирует в течение первых 100 секунд. По истечении этого времени веб-розетка, похоже, переходит в прерванное состояние, как по маслу.

[CLIENT][06/04/2018 11:27:21] WS client connected
[CLIENT][06/04/2018 11:29:01] WS client disconnected

Попытка сделать это на экземпляре IIS Express приводит к той же проблеме, хотя задержка, кажется, составляет 90 секунд, а не 100 (это также согласуется).

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

На хостинге веб-приложений Azure я включил веб-сокеты, а также попытался включить функцию "Всегда включено" в надежде, что это предотвратит проблему, не позволив серверу перейти в режим ожидания, но это не помогло.

Существуют ли какие-либо параметры лазури, о которых я не знаю, которые можно настроить так, чтобы эти веб-сокеты оставались открытыми в течение более длительного периода времени?

Большое спасибо

1 ответ

Решение

К сожалению, кажется, что azure и IIS оба были "красными сельдями", вместо этого проблема была проблемой, возникающей при использовании реализации System.Net.Websockets.ClientWebSocket на C#. Подробности блестяще подытожены на: .NET WebSockets принудительно закрыты, несмотря на поддержание активности и активность соединения

Для других, сталкивающихся с этой проблемой, эффективный (но не идеальный) способ обойти это - выполнить один раз перед созданием клиентского веб-сокета:

ServicePointManager.MaxServicePointIdleTime = int.MaxValue;

Другие вопросы по тегам