C#WebResponse.GetResponse()在404页面上找不到System.Net.WebException

时间:2013-10-15 08:43:21

标签: c# .net web-applications

我是C#的新手。我注意到当服务器返回其他任何东西然后200 OK我得到了

异常。以下是404错误的示例。

未处理的异常:System.Net.WebException:远程服务器返回错误:(404)Not Found。

为什么C#会产生异常?这意味着我必须使用try / catch块。

我见过的所有例子都没有提到这个问题。

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

是的,您需要使用try/catch块,因为GetResponse()会引发4xx-5xx范围内状态代码的异常。

try
{
    response = (HttpWebResponse)request.GetResponse();
    code = response.StatusCode;
}
catch (WebException we)
{
    code = ((HttpWebResponse)we.Response).StatusCode;
}

答案 1 :(得分:0)

是的,它引发了一个例外。但是您仍然可以从异常对象获得响应和状态。所以使用try / catch,并在catch块中获取所需的信息。

答案 2 :(得分:0)

如果你真的不想使用try-catch,我建议你阅读以下文章:Fixing WebRequest’s desire to throw exceptions instead of returning status

答案 3 :(得分:0)

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

或 ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072; // TLS 1.2 要么 ServicePointManager.SecurityProtocol =(SecurityProtocolType)768; // TLS 1.1