3

我有一个应用程序,它有时必须向服务器发出一些请求,以查看这些请求是否被正确阻止。换句话说,预期的服务器回答是 403 Forbidden。

使用这样的一段代码:

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(protectedPage);
httpRequest.Method = WebRequestMethods.Http.Head;
WebResponse response = HttpRequest.GetResponse();

aWebException在最后一行抛出。

在分析代码时,try/catch 块中的这个异常会产生我想要避免的性能影响。

有没有办法检查服务器响应,期待 403,而不必捕获异常(但避免直接使用套接字)?

4

2 回答 2

3

不幸的是,这是框架中一个令人烦恼的异常,并且没有办法避免它(同时仍然使用HttpWebRequest该类)。但是,正如 High 所指出的,这种异常处理将花费纳秒,而 Web 请求本身将花费毫秒(最多),所以不用担心。

WebException对象有一个Response包含响应的属性;当您处理异常时,处置该WebResponse对象(以避免泄漏连接)很重要。

于 2010-12-05T05:06:01.507 回答
2

分析中花费时间的可能不是异常捕获部分,而是来自网站的实际响应。

WebException.Status 属性将为您提供 HTTP 响应的状态代码,您可以在此基础上进行进一步处理。

于 2010-12-05T12:12:49.127 回答