C# WebResponse.GetResponse() 返回 System.Net.WebException on 4

本文关键字:Net WebException on System 返回 WebResponse GetResponse | 更新日期: 2023-09-27 18:35:28

我是C#的新手。我注意到当服务器返回 200 OK 以外的任何内容时,我得到一个

例外。下面是 404 错误的示例。

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

为什么 C# 应该生成异常? 这意味着我必须使用尝试/捕获块。

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

提前感谢任何帮助。

C# WebResponse.GetResponse() 返回 System.Net.WebException on 4

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

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

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

如果你真的不想使用 try-catch,我建议你阅读以下文章:修复 WebRequest 抛出异常而不是返回状态的愿望。

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

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