У меня есть приложение на стороне сервера Blazor, опубликованное в IIS 10. Когда вы просматриваете произвольную страницу и просто позволяете ей бездействовать через минуту или около того (иногда всего 45 секунд, иногда что-то между 1 и двумя минутами) модальный
Попытка повторно подключиться к серверу ...
появляется на пару секунд. В консоли браузера в журнале отображается либо
Ошибка: соединение прервано с ошибкой «Ошибка: истекло время ожидания сервера без получения сообщения от сервера.».
or
Информация: Соединение прервано.
Поскольку кажется, что это проблема с тайм-аутом, я добавил следующие параметры в ConfigureServices в моем startup.cs
services.AddServerSideBlazor()
.AddHubOptions(options =>
{
options.ClientTimeoutInterval = TimeSpan.FromMinutes(10);
options.KeepAliveInterval = TimeSpan.FromSeconds(3);
options.HandshakeTimeout = TimeSpan.FromMinutes(10);
});
Однако это не решает проблемы.
Я также перешел к расширенным настройкам своего сайта в IIS и увеличил тайм-аут соединения со 120 секунд по умолчанию до 600 секунд. Это тоже не помогло.
Эти частые отключения происходят только на активном сайте, размещенном в IIS 10. Если я запускаю приложение локально с помощью Visual Studio, соединение будет стабильным.
Любые намеки на то, что мне не хватает, будут оценены!
Обновление:
Как было предложено @agua из марса в комментарии ниже, я изменил тип транспорта следующим образом
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub(options => { options.Transports = HttpTransportType.LongPolling; });
endpoints.MapFallbackToPage("/_Host");
});
После этого изменения соединение по-прежнему закрыто. Журнал консоли показывает
Информация: (Транспорт LongPolling) Опрос завершен сервером.
Я также пробовал HttpTransportType.ServerSentEvents, который вообще не работает, но дает эту ошибку
Ошибка: не удалось запустить соединение: Ошибка: невозможно подключиться к серверу с помощью любого из доступных транспортов. Ошибка ServerSentEvents: ошибка: «ServerSentEvents» не поддерживает двоичные файлы.
Обновление 2:
IIS настроен на использование HTTP 1.1. Я попытался перейти на HTTP / 2, но это ничего не изменило в отношении отключений.