[英]http client exception handling in asp.net core
我正在使用 .net 5 個最新的 prview..下面是 mvc 中 http 客戶端的代碼
var response = await _httpClient.SendAsync(request);
try
{
response.EnsureSuccessStatusCode();
data = await response.Content.ReadFromJsonAsync<Abc>();
return data;
}
catch (HttpRequestException ex) when (ex.StatusCode = 404) ----how to check 404 error?
{
throw;
}
catch (HttpRequestException ex) when (ex.StatusCode == 503)
{
throw;
}
如何檢查 404 錯誤或 catch.am 中的其他詳細信息低於錯誤。提前致謝...
最簡單的方法是使用適當的枚舉進行比較:
var response = await _httpClient.SendAsync(request);
try
{
response.EnsureSuccessStatusCode();
data = await response.Content.ReadFromJsonAsync<Abc>();
return data;
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound) ----how to check 404 error?
{
throw;
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.ServiceUnavailable)
{
throw;
}
另一種選擇是強制轉換為 (int?),但使用枚舉應該會提供更好的可讀性。
HttpRequestException.StatusCode是HttpStatusCode的類型。 您不能直接與 int 進行比較。
您可以將狀態代碼轉換為 int,例如:
try
{
response.EnsureSuccessStatusCode();
data = await response.Content.ReadFromJsonAsync<Abc>();
return data;
}
catch (HttpRequestException ex) when (((int)ex.StatusCode) = 404)
{
throw;
}
catch (HttpRequestException ex) when (((in)ex.StatusCode) == 503)
{
throw;
}
或者與枚舉的值進行比較:
try
{
response.EnsureSuccessStatusCode();
data = await response.Content.ReadFromJsonAsync<Abc>();
return data;
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound)
{
throw;
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.ServiceUnavailable)
{
throw;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.