我有一个应用程序,有时必须向服务器发出一些请求才能看到这些请求被正确阻止。换句话说,预期的服务器答案是403 Forbidden。
使用这样的代码:
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(protectedPage);
httpRequest.Method = WebRequestMethods.Http.Head;
WebResponse response = HttpRequest.GetResponse();
在最后一行抛出WebException
。
在分析代码时,try / catch块中的此异常会对性能产生影响,我想避免这种情况。
有没有办法检查服务器响应,期望403,而不必捕获异常(但避免直接使用套接字)?
答案 0 :(得分:3)
不幸的是,这是框架中的vexing exception,并且没有办法避免它(同时仍然使用HttpWebRequest
类)。但是,正如High指出的那样,这个异常处理需要几纳秒,而Web请求本身需要几毫秒(充其量),所以不要担心它。
WebException
对象具有包含响应的Response
属性;当你处理异常时,重要的是处置WebResponse
对象(以避免泄漏连接)。
答案 1 :(得分:2)
分析中花费的时间可能不是捕获部分的例外情况,而是来自网站的实际响应。
WebException.Status属性将为您提供HTTP响应的状态代码,您可以基于此进行进一步处理。