C# 如何避免403禁止响应的WebException?

C# 如何避免403禁止响应的WebException?,c#,performance,exception-handling,httpwebrequest,system.net.webexception,C#,Performance,Exception Handling,Httpwebrequest,System.net.webexception,我有一个应用程序,它有时必须向服务器发出一些请求,以确保这些请求被正确阻止。换句话说,预期的服务器应答是403禁止的 用这样一段代码: HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(protectedPage); httpRequest.Method = WebRequestMethods.Http.Head; WebResponse response = HttpRequest.GetResponse(); 最后

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

用这样一段代码:

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(protectedPage);
httpRequest.Method = WebRequestMethods.Http.Head;
WebResponse response = HttpRequest.GetResponse();
最后一行抛出
WebException

分析代码时,try/catch块中的此异常会对性能产生影响,我希望避免这种影响

有没有一种方法可以在不捕获异常(但避免直接使用套接字)的情况下检查服务器响应(预期为403)?

不幸的是,这是框架中的一个错误,无法避免(同时仍使用
HttpWebRequest
类)。但是,正如High所指出的,这个异常处理将花费纳秒,而web请求本身将花费毫秒(最多),所以不用担心


WebException
对象具有包含响应的
Response
属性;处理异常时,重要的是要处理
WebResponse
对象(以避免连接泄漏)。

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


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

我看不出捕获该异常会对性能产生任何影响。我的意思是,与接收网页所需的时间相比,它不需要任何东西。WebException.Status只是表示协议错误。它不提供状态代码。您必须强制转换异常。响应
HttpWebResponse
并检查
Response.StatusCode
属性。谢谢,((HttpWebResponse)(we.Response))。StatusCode按照您所说的给出值。@Tergiver,我认为这是一种情况,一个用例令人烦恼的异常是另一个用例的外部异常
File.Open
抛出如果您没有读取该文件的权限,
HttpWebRequest
正在执行类似的操作。