-1

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...

enter image description here

Glen
  • 91
  • 9

2 Answers2

5

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.

Wai Ha Lee
  • 7,664
  • 52
  • 54
  • 80
Compufreak
  • 3,832
  • 1
  • 16
  • 45
2

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 (((in)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;
}
vernou
  • 3,246
  • 2
  • 18
  • 40