IIS上的Blazor服务器端应用程序经常断开WebSocket连接

IIS上的Blazor服务器端应用程序经常断开WebSocket连接,iis,websocket,blazor,blazor-server-side,Iis,Websocket,Blazor,Blazor Server Side,我有一个Blazor服务器端应用程序发布在IIS 10上。 当浏览任意页面并在一分钟左右(有时仅45秒,有时介于1到2分钟之间)后让其空闲时,模式 正在尝试重新连接到服务器 出现几秒钟。 在浏览器控制台中,日志记录显示: 错误:连接已断开,错误为“错误:服务器超时” 已过,但未收到来自服务器的消息。“ 或 信息:连接已断开 由于这似乎是一个超时问题,我在我的startup.cs中向配置服务添加了以下选项 services.AddServerSideBlazor()

我有一个Blazor服务器端应用程序发布在IIS 10上。 当浏览任意页面并在一分钟左右(有时仅45秒,有时介于1到2分钟之间)后让其空闲时,模式

正在尝试重新连接到服务器

出现几秒钟。 在浏览器控制台中,日志记录显示:

错误:连接已断开,错误为“错误:服务器超时” 已过,但未收到来自服务器的消息。“

信息:连接已断开

由于这似乎是一个超时问题,我在我的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在本地启动应用程序,则连接是稳定的

任何关于我所缺少的东西的提示都将不胜感激

更新

正如mars的@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,但这并没有改变与断开连接有关的任何内容。

尝试一下

            app.UseEndpoints(endpoints =>
            {
//other settings
.
.
endpoints.MapBlazorHub(options => options.WebSockets.CloseTimeout = new TimeSpan(1, 1, 1));
//other settings
.
.
});

这可能与IIS应用程序池回收有关。尝试禁用回收,看看这是否阻止了断开连接。

防火墙或代理可以关闭连接。尝试切换到其他传输。@来自mars的agua:LongPolling和ServerSentEvents传输类型也不起作用(请参阅问题的更新)。嗯,我想您应该在github repo上打开一个问题。应用程序应该在连接丢失后尝试重新连接,长池应该可以工作。也就是说,你可能有一台设备正在关闭连接。或者您的IIS服务器配置为使用HTTP 1。0@aguafrommars:它在连接丢失后重新连接(对于WebSocket和LongPolling)。但我收到用户的投诉,因为每隔一分钟左右重新连接一次会让它看起来非常不稳定。我将再看一看IIS服务器和代理。谢谢你的建议!谢谢@ganesh kumbhar,这解决了我的问题