首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpRequestException对WebException

HttpRequestException对WebException
EN

Stack Overflow用户
提问于 2014-03-13 14:50:55
回答 3查看 13.9K关注 0票数 20

这是一个我很困惑的一般性问题。我以为一旦发出REST请求,就会通过WebException返回一个错误。在一种情况下,我得到了一个HttpRequestException,这不允许我获得HTTP代码。

我对这些东西很陌生,但它们之间有什么区别呢?为什么有两种类型?什么时候被使用,而不是另一个?

WebException似乎运行得很好。HttpRequestException似乎是一个非常弱的版本,它知道状态代码(在它的消息中),但它不会明确地告诉我它是什么。

编辑:,我在使用HttpClient。专门调用client.GetStreamAsync()

EN

回答 3

Stack Overflow用户

发布于 2014-03-24 13:56:05

有三种不同的失败场景:

( a)无法连接到服务器或代理,在这种情况下将引发HttpRequestException。请注意,如果您的服务器处于故障状态,并且正在运行fiddler,您将永远不会看到此异常,您将得到一个5XX状态代码。

( b)读/写网络流时,会有某种干扰,您将得到一个IOException。

c)您将得到一个带有4XX/5XX状态代码的HttpStatusCode的响应。如果客户端应用程序选择调用response.EnsureSuccessStatusCode(),那么将抛出一个HttpRequestException。

如果您决定调用EnsureSuccessStatusCode,那么您将做出一个明确的决定,即除了成功/失败之外,您不关心状态代码。

如果您确实需要抛出一个异常,然后处理状态代码,那么我建议您创建自己的扩展方法来替换EnsureSuccessStatusCode,并创建可以存储状态代码的自己的异常。或者,最好根据您希望采取的纠正措施,将状态代码转换为少数几种不同的异常之一。

票数 21
EN

Stack Overflow用户

发布于 2014-03-13 14:57:09

WebException类:当通过可插拔协议访问网络时发生错误时引发的异常。

HttpRequestException类:HttpClient和HttpMessageHandler类引发的异常的基类。

我认为HttpRequestException的内部例外可能是WebException,但我不确定它是否曾经是。

注意,404,302或200 (OK)以外的任何响应都是而不是例外。这些响应是完全有效的HTTP响应。

票数 2
EN

Stack Overflow用户

发布于 2020-12-04 09:59:39

https://github.com/dotnet/runtime/pull/32455在.NET 5中将StatusCode添加到HttpRequestException中。

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

https://stackoverflow.com/questions/22382373

复制
相关文章

相似问题

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