Blazor Server httprequest Timeout Maximum - это исправление 30 секундC#

Место общения программистов C#
Ответить
Anonymous
 Blazor Server httprequest Timeout Maximum - это исправление 30 секунд

Сообщение Anonymous »

У меня есть приложение Blazor Server C# в .net 9, и я использую службу для обработки удаленных вызовов API. Я хотел бы установить тайм -аут для запросов во всем мире, как это: < /p>

Код: Выделить всё

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
Последняя строка устанавливает тайм -аут Polly. Это нормально! Код не использует мою настройку на 60 секунд в этом случае? по умолчанию 00:01:40.
Я дважды проверяю 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»