Почему npgsql выдает две разные ошибки при тайм-ауте?C#

Место общения программистов C#
Ответить
Anonymous
 Почему npgsql выдает две разные ошибки при тайм-ауте?

Сообщение Anonymous »

У меня есть веб-API .NET, использующий EF Core. Я пытаюсь реализовать промежуточное программное обеспечение с таймаутом, как показано

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

    public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
int commandTimeoutInSeconds;

if (context.Request.Path.StartsWithSegments("/shorterTimeout"))
{
commandTimeoutInSeconds = _appConfig.shorterTimeout;
}
else
{
var conn = new NpgsqlConnectionStringBuilder(_appConfig.ConnectionString);

if (conn.TryGetValue("Command Timeout", out object? commandTimeout))
{
commandTimeoutInSeconds = Convert.ToInt32(commandTimeout);
}
else
{
// assume a default of 30
commandTimeoutInSeconds = defaultCommandTimeoutInSeconds;
}
}

var dbContext = context.RequestServices.GetRequiredService();

dbContext.Database.SetCommandTimeout(commandTimeoutInSeconds);

await next(context);
}
^^ Кажется, это работает так, как ожидалось. Время ожидания маршрутов API истекает, как и следовало ожидать, за исключением некоторых маршрутов, я получаю обратно NpgsqlException с надписью «Тайм-аут во время попытки чтения», но затем на других маршрутах я получаю то же самое исключение обратно, но в качестве внутреннего исключения для InvalidOperationException, которое говорит: «Возникло исключение, которое, вероятно, связано с временным сбоем».
Кто-нибудь знает, почему это может быть?
Я попробовал немного вещей. Я попытался настроить запросы, отключающие исключения, чтобы посмотреть, сыграла ли свою роль их сложность. Я не видел никаких доказательств того, что это так. Я немного покопался, чтобы выяснить, может ли EF Core автоматически повторять запросы, чтобы убедиться, что это так, но в нашей кодовой базе нет ничего, что указывало бы на то, что мы включаем такое поведение, и не похоже, что это поведение включено по умолчанию.

Подробнее здесь: https://stackoverflow.com/questions/793 ... timing-out
Ответить

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

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

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

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

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