Reputation: 331
i am using .net 5 latest prview..Below is the code for http client in mvc
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;
}
How to check 404 error or other details in catch.am getting below error.Thanks in advance...
Upvotes: 3
Views: 8474
Reputation: 7590
HttpRequestException.StatusCode is type of HttpStatusCode. You can't compare directly with int.
You can cast the status code to int like :
try
{
response.EnsureSuccessStatusCode();
data = await response.Content.ReadFromJsonAsync<Abc>();
return data;
}
catch (HttpRequestException ex) when (((int)ex.StatusCode) == 404)
{
throw;
}
catch (HttpRequestException ex) when (((int)ex.StatusCode) == 503)
{
throw;
}
Or compare with the enumeration's values :
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;
}
Upvotes: 6
Reputation: 4629
The easiest way would be to use the proper enum for comparison:
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;
}
Another option would be casting to (int?), but using the enum should provide better readibility.
Upvotes: 7