IIS上的Blazor服务器端应用程序经常断开WebSocket连接 [英] Blazor server side app on IIS frequently disconnects WebSocket connection
本文介绍了IIS上的Blazor服务器端应用程序经常断开WebSocket连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个在IIS10上发布的Blazor服务器端应用程序。 当浏览到任意页面并在大约一分钟(有时只有45秒,有时在1到2分钟之间)后让它空闲时,模态
正在尝试重新连接到服务器.
会出现几秒钟。 在浏览器控制台中,日志显示
错误:连接已断开,出现错误‘错误:服务器超时 已用时间,但未收到来自服务器的消息。‘。
或
信息:连接已断开。
由于这似乎是超时问题,我在Startup.cs
中向ConfigureServices添加了以下选项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 from mars在下面的注释中的建议,我更改了运输类型,如下所示
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,但这没有更改有关断开连接的任何内容。推荐答案
试用此功能..
app.UseEndpoints(endpoints =>
{
//other settings
.
.
endpoints.MapBlazorHub(options => options.WebSockets.CloseTimeout = new TimeSpan(1, 1, 1));
//other settings
.
.
});
这篇关于IIS上的Blazor服务器端应用程序经常断开WebSocket连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文