gpt4 book ai didi

c# - HttpWebResponse.StatusCode 未捕获 500 错误

转载 作者:可可西里 更新时间:2023-11-01 16:57:48 27 4
gpt4 key购买 nike

我的问题:HttpWebResponse.StatusCode 是否检测到 Asp.Net 错误?主要是蓝屏死机?

一些背景:我正在开发一个简单的 c# 控制台应用程序,它将测试服务器和服务以确保它们仍然正常运行。我假设因为 HttpStatusCodes 是用 OK、Moved、InteralServerError 等枚举的...我可以简单地执行以下操作。

WebRequest request = WebRequest.Create(url);
request.Timeout = 10000;

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

if (response == null || response.StatusCode != HttpStatusCode.OK)
{
// SERVER IS OK
return false;
}
else
{
// SERVER HAS SOME PROBLEMS
return true;
}

我今天早上发现这不起作用。一个 ASP.Net 应用程序崩溃并显示蓝屏死机,我的应用程序似乎并不介意,因为 response.StatusCode 等于 HttpStatusCode.OK。

我错过了什么?

谢谢//长矛

更新多亏了乔恩,这似乎奏效了。

 HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException webexp)
{
response = (HttpWebResponse)webexp.Response;
}

最佳答案

GetResponse 将为错误抛出 WebException - 但您可以捕获 WebException,使用 WebException.Response获取响应,然后从中获取状态代码。

据我所知,GetResponse 从不 返回 null,因此您可以从代码中删除该测试。

此外,与其让 if/else block 返回 true/false,不如返回对表达式求值的结果很简单,例如:

return response.StatusCode == HttpStatusCode.OK;

(老实说,如果抛出任何 WebException,您可能会返回false...)

关于c# - HttpWebResponse.StatusCode 未捕获 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com