Blazor Server应用程序在与服务器连接时可能会出现“Attempting to reconnect”消息的问题。这种情况通常由网络不稳定、长时间运行程序或服务端更改导致,但不管原因如何,下面是几种适用的解决方法。
AddMessagePackProtocol()
方法设置默认超时时间。将该值调高可以让应用程序更长时间尝试连接服务器。示例如下:services.AddSignalR(options =>
{
options.ClientTimeoutInterval = TimeSpan.FromSeconds(30);
}).AddMessagePackProtocol();
connection = new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/hub"), options =>
{
options.Transports = HttpTransportType.WebSockets;
})
.WithAutomaticReconnect(new[] { TimeSpan.Zero }) // Stops SignalR from automatically reconnecting
.Build();
IConnectionRetryPolicy
接口实现自定义重连策略。示例如下:public class CustomRetryPolicy : IConnectionRetryPolicy
{
public TimeSpan? NextRetryDelay(RetryContext context)
{
if (context.ElapsedTime < TimeSpan.FromSeconds(30))
return TimeSpan.FromSeconds(15); // Retry in 15 seconds for 30 seconds
else
return null; // Stop retrying after 30 seconds
}
}
// Use the custom retry policy
var builder = new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/hub"), options =>
{
上一篇:BlazorServer|NavigationTologinthrowsNavigationExceptionincustomRoutView
下一篇:BlazorServer“Cannotfindthefallbackendpointspecifiedbyroutevalues:{page:/_Host,area:}.”