IIS上的Blazor服务器端应用程序经常断开WebSocket连接 [英] Blazor server side app on IIS frequently disconnects WebSocket connection

查看:40
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆