为什么HttpClient.PostAsync不会失败?

时间:2018-01-10 10:14:35

标签: c# asp.net

在ASP.Net Core Web服务中,如果HttpClient.GetStringAsync调用因404错误或其他原因而失败,则会抛出HttpRequestException。这很棒。

另一方面,如果404的HttpClient.PostAsync调用失败,则不会抛出异常。我必须检查状态代码,制作异常并手动抛出它。

为什么要有这种差异,是否有一种更优雅的方式来解决这个问题?

HttpResponseMessage response = await _http.PostAsync("api/pollapi/request", new StringContent(requestInput));

if (!response.IsSuccessStatusCode)
{
   throw new HttpRequestException($"Response status does not indicate success: {(int)response.StatusCode} ({response.StatusCode}).");
}

1 个答案:

答案 0 :(得分:5)

您可以使用HttpResponseMessage.EnsureSuccessStatusCode方法:

  

如果HTTP响应的IsSuccessStatusCode属性为false,则抛出异常。