У меня есть приложение на стороне сервера Blazor, опубликованное на IIS 10. При переходе на произвольную страницу и просто ее простоя через минуту или около того (иногда только 45 с c, иногда что-то между 1 и 2 минутами) модальное
Попытка переподключения к серверу ...
появляется на пару секунд. В консоли браузера в журнале отображается либо
Ошибка: соединение отключено с ошибкой «Ошибка: истекло время ожидания сервера без получения сообщения от сервера.».
или
Информация: Соединение разорвано.
Поскольку это кажется проблемой с тайм-аутом, я добавил следующие опции к ConfigureServices при моем запуске. cs
services.AddServerSideBlazor()
.AddHubOptions(options =>
{
options.ClientTimeoutInterval = TimeSpan.FromMinutes(10);
options.KeepAliveInterval = TimeSpan.FromSeconds(3);
options.HandshakeTimeout = TimeSpan.FromMinutes(10);
});
Это не решает проблему, хотя.
Я также перешел к расширенным настройкам своего сайта в IIS и увеличил тайм-аут соединения по умолчанию от 120 se c до 600 se c. Это тоже не помогло.
Эти частые отключения происходят только на работающем сайте, размещенном на 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, но это ничего не изменило в отношении отключений.