如何在ASP.NET Core SignalR v2.1中增加超时设置?
解决ASP.NET Core 2.1 SignalR服务器超时问题
你遇到的这个服务器超时错误,在ASP.NET Core 2.1的SignalR里,配置位置确实和旧版SignalR有区别,我给你梳理下客户端和服务器端的具体修改方法:
客户端(JavaScript)配置
在创建Hub连接时,你可以通过withUrl的配置参数调整超时时间,核心是设置serverTimeoutInMilliseconds属性,它默认是30000毫秒(30秒),你可以根据业务需求延长这个值:
const connection = new signalR.HubConnectionBuilder() .withUrl("/yourHubEndpoint", { // 设置为60秒,可根据实际场景调整数值 serverTimeoutInMilliseconds: 60000 }) .build();
另外还有个关联的keepAliveIntervalInMilliseconds(默认15000毫秒),它控制客户端发送心跳包的间隔。一般建议把超时时间设为心跳间隔的2倍以上,这样能减少因网络临时波动导致的误判超时。
服务器端配置
在Startup.cs的ConfigureServices方法里,通过AddSignalR的选项来配置服务器端的超时和心跳参数:
public void ConfigureServices(IServiceCollection services) { services.AddSignalR(options => { // 设置客户端超时时间为60秒 options.ClientTimeoutInterval = TimeSpan.FromSeconds(60); // 设置服务器发送心跳包的间隔为30秒 options.KeepAliveInterval = TimeSpan.FromSeconds(30); }); // 其他服务配置代码... }
这里要注意,服务器端的ClientTimeoutInterval建议大于等于客户端设置的serverTimeoutInMilliseconds,避免两端配置不匹配引发的问题。
顺带提一句,你之前参考的旧版SignalR文档里的配置方式不适用于ASP.NET Core版本,Core 2.1的SignalR把这些配置统一整合到了上述的客户端构建器和服务器选项中,所以之前没找到对应内容也正常~
内容的提问来源于stack exchange,提问作者user3165209
相关产品推荐
相关产品推荐

