Мне нужно обрабатывать тайм-аут как особый случай, но flurl не дает ожидаемого исключения в некоторых случаях.
Вот мой упрощенный код для этого.
try
{
// Call Listener here with the result of the process
using (IFlurlClient flurlClient = new FlurlClient(Url))
{
string response = await flurlClient
.Configure(s => s.Timeout = TimeSpan.FromSeconds(130))
.WithOAuthBearerToken(accessToken)
.Request()
.PostJsonAsync(result)
.ReceiveString();
Logger.LogInformation(response);
ListenerResponse listenerResponse = JsonConvert.DeserializeObject<ListenerResponse>(response);
Logger.LogInformation(listenerResponse.Success.ToString());
if (!listenerResponse.Success)
{
throw new RejectedException("Listener rejected the request.");
}
}
}
catch (FlurlHttpTimeoutException ex)
{
// throws with this message: "Call timed out: POST https://..."
Logger.LogError(ex, $"Could not reach to Listener at: {Url}.");
throw;
}
catch (FlurlHttpException ex)
{
// throws with this message: "Call failed. Connection timed out POST https://..."
Logger.LogError(ex, ex.Message);
throw;
}
Что происходит, когда я устанавливаю тайм-аут ниже определенного значения ( <130 </strong>), flurl выбрасывает ожидаемое FlurlHttpTimeoutException
. Но если я установлю тайм-аут выше этого значения (> = 130 ), flurl на этот раз выдаст более общий FlurlHttpException
.
Обратите внимание, что сообщения об исключениях немного отличаются:
FlurlHttpTimeoutException
Время ожидания вызова: POST https://...
FlurlHttpException
Звонок не удался. Тайм-аут соединения POST https://...
Кто-нибудь знает, как я могу исправить его, чтобы он вел себя так, как ожидается - выбрасывая FlurlHttpTimeoutException
для всех значений времени ожидания?