首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从StatusCode获得HttpRequestException?

如何从StatusCode获得HttpRequestException?
EN

Stack Overflow用户
提问于 2014-03-06 07:13:32
回答 8查看 95.2K关注 0票数 108

我可能漏掉了一些显而易见的东西。

我使用的是HttpClient,它在消息字符串中抛出包含StatusCodeHttpRequestException

我如何访问那个StatusCode

编辑:更多信息,我匆忙写了这个问题。

我正在使用HttpClient访问WebApi项目中的另一个API。是的,我知道我为什么要打电话给EnsureSuccessStatusCode()。我想向下游传播一些错误,比如404和403。

我想要的只是不断地使用自定义HttpRequestExceptionHttpResponseException转换为ExceptionFilterAttribute

不幸的是,HttpRequestException没有任何额外的信息,我可以使用除了消息。我希望能以原始(int或enum)的形式发现StatusCode

看来我也可以:

  1. 使用该消息切换状态代码(bleh)
  2. 或者创建我的EnsureSuccessStatusCode版本并抛出实际可用的异常。
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-03-06 07:42:50

状态代码作为字符串的一部分传递给HttpRequestException,这样您就不能单独从这些异常中恢复它。

System.Net.Http的设计要求您访问HttpResponseMessage.StatusCode而不是等待异常。

http://msdn.microsoft.com/en-us/library/system.net.http.httpresponsemessage(v=vs.110).aspx

如果您现在正在跟踪微软指南,请确保您清楚地理解它为什么要求您调用HttpResponseMessage.EnsureSucessStatusCode。如果你不调用这个函数,就不会有例外。

票数 43
EN

Stack Overflow用户

发布于 2016-08-10 20:24:13

不管它有什么价值,这家伙做了一件聪明的事:https://social.msdn.microsoft.com/Forums/vstudio/en-US/dc9bc426-1654-4319-a7fb-383f00b68def/c-httpresponsemessage-throws-exception-httprequestexception-webexception-the-remote-name?forum=csharpgeneral

在需要异常状态属性的情况下,可以这样做:

代码语言:javascript
运行
复制
catch (HttpRequestException requestException)
{
    if (requestException.InnerException is WebException webException && webException.Status == WebExceptionStatus.NameResolutionFailure)
    {
        return true;
    }

    return false;
}
票数 30
EN

Stack Overflow用户

发布于 2021-01-03 15:07:13

从.NET 5.0开始, HttpRequestException有一个StatusCode属性,如果异常表示一个不成功的结果,该属性将具有一个值,否则为null。因此,您可以如下所示:

代码语言:javascript
运行
复制
try
{
   // Your code
}
catch (HttpRequestException httpRequestException)
{
   if ((int)httpRequestException.StatusCode == 401)
   {
        // Show unauthorized error message
   }
   else 
   {
       // Other error message
   }
}

有关更多详细信息,请参阅这里

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22217619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档