Код: Выделить всё
var timeoutSec = builder.Configuration.GetValue("Main:ServiceTimeoutSec");
builder.Services.AddHttpClient((serviceProvider, client) =>
{
var config = serviceProvider.GetRequiredService();
var baseAddress = config["Api:ApiBaseAddress"] ?? "MISSING_BASE_ADDRESS";
client.BaseAddress = new Uri(baseAddress);
// HAS NO EFFECT -> client.Timeout = TimeSpan.FromSeconds(timeoutSec);
})
.AddPolicyHandler(Policy.TimeoutAsync(TimeSpan.FromSeconds(timeoutSec))); // API query timeout
Я дважды проверяю DI и службу, а хороший httpclient построен в Сервисе. /> Я попытался изменить тайм -ауты подключения сигнала: < /p>
сторона сервера: < /p>
builder.Services.AddServerSideBlazor()
.AddHubOptions(options =>
{
options.MaximumReceiveMessageSize = 102_400_000;
options.KeepAliveInterval = TimeSpan.FromSeconds(80);
options.ClientTimeoutInterval = TimeSpan.FromSeconds(160); // ≥ 2 × keep-alive
options.HandshakeTimeout = TimeSpan.FromSeconds(10);
})
.AddCircuitOptions(options => { options.DetailedErrors = builder.Environment.IsDevelopment(); }); // Enable detailed errors
< /code>
Клиентская сторона: < /p>
Blazor.start({
configureSignalR: builder => builder
.withKeepAliveInterval(80000) // 80 s – must match server
.withServerTimeout(160000), // 160 s – ≥ 2 × keep-alive
reconnectionOptions: {
maxRetries: 10,
retryIntervalMilliseconds: 5000
}
});
window.Blazor.defaultReconnectionHandler._reconnectCallback = () => {
console.log("Blazor is reconnecting...");
};
< /code>
У меня нет никакой дополнительной конфигурации веб -сервера, это простой шаблон Blazor Web App в Net 9. Если я хорошо знаю, что это Kestrel. Я попытался изменить некоторые настройки Kestrel в appsettings.json: < /p>
"Kestrel": {
"Limits": {
"KeepAliveTimeout": "00:02:00",
"RequestHeadersTimeout": "00:00:45",
}
}
< /code>
Результат всегда одинаковый, тайм -аут наступает после 30 или 90 секунд
, независимо от моих настроек ... < /p>
Подробнее здесь: https://stackoverflow.com/questions/796 ... 30-seconds
Мобильная версия