哪些特定的状态代码会导致HttpWebRequest.GetResponse()抛出WebException?

时间:2010-05-31 22:07:49

标签: c# httpwebrequest system.net.webexception

我一直在寻找关于此的一些明确的文件,但找不到任何好运。

在执行类似POST的操作后,哪些HTTP响应状态代码会HttpWebRequest.GetResponse()生成WebException

具体而言,它会为状态WebException以外的任何内容生成200 OK吗?或者它只会产生WebException,例如400,404和500(为了争论)?

我想知道,因为我正在与之通信的服务器定义除HTTP 200 OK以外的任何内容作为错误条件返回。我可以依赖为{200}以外的其他任何内容生成WebException吗?

我目前编写代码以检查每次返回状态代码并确保其为200 OK。如果不是,它将采取适当的行动 - 但是该代码与我希望清理的WebException的catch块之间存在大量重复。

非常感谢任何与文档相关的链接。

3 个答案:

答案 0 :(得分:2)

结束回复之后做了明确的检查&捕获和检查WebExceptions;导致一些重复的代码,但如果状态不是200,那么WebException是否总是会发生没有明确的答案。

答案 1 :(得分:1)

我认为它会,但这听起来像是一个冒险的假设。首先,MSDN docs明确指出GetResponse将抛出除WebException之外的异常。但是,我可以从经验中明确地说,“304 Not-Modified”响应将被抛出WebException

所有这些谈话都散发出一股狡猾的代码气味;不要使用异常来控制执行流程。您最好适当地处理异常,然后明确检查StatusCode属性是否允许值。

答案 2 :(得分:0)

来自seperate system的WebException系统为HTTP error system。 这主要是因为浏览器或客户端返回HTTP错误,并且在构建页面时服务器会抛出WebException。当发现HTTP错误时,页面将被发送到客户端,您将无法了解它。