如何避免WebException for 403 Forbidden响应?
我有一个应用程序,它有时必须向服务器发出一些请求,以查看这些请求是否被正确阻止。换句话说,预计服务器答案是403禁止。如何避免WebException for 403 Forbidden响应?
用一块这样的代码:
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(protectedPage);
httpRequest.Method = WebRequestMethods.Http.Head;
WebResponse response = HttpRequest.GetResponse();
一个WebException
被套上的最后一行。
当分析代码时,try/catch块中的这个异常具有我想要避免的性能影响。
有没有办法检查服务器响应,期待403,而不必捕捉异常(但避免直接使用套接字)?
不幸的是,这是一个vexing exception在框架中,并且没有办法避免它(同时仍然使用HttpWebRequest
类)。但是,正如High指出的那样,这种异常处理将需要几十秒的时间,而Web请求本身需要几毫秒(最好),所以不要担心。
WebException
对象具有包含响应的Response
属性;当您处理异常时,处理该对象(以避免连接泄漏)很重要。
+1促进Eric Lippert的异常分类 – Tergiver 2010-12-05 14:11:38
@Tergiver,我认为这是一种情况,一个用例的令人烦恼的异常是另一个用例的外生异常。如果你没有权限读取文件,`File.Open`会抛出,`HttpWebRequest`在这里做类似的事情。 – 2014-08-28 21:55:04
概要分析中需要花费的时间可能不是异常捕捉部分,而是来自网站的实际响应。
WebException.Status属性将为您提供HTTP响应的状态码,您可以根据该响应进行进一步处理。
我没有看到捕捉该异常会如何影响性能。我的意思是,与接收网页需要多长时间相比,这无需任何费用。 – Will 2010-12-05 04:38:26