我的问题是:
httpwebresponse.statuscode是否检测到ASP.NET错误?主要是死亡的黄屏?
一些背景:
我正在开发一个简单的C控制台应用程序,它将测试服务器和服务,以确保它们仍然正常工作。我假设由于httpstatuscode是用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块返回true/false,还不如简单地返回计算表达式的结果,例如:

return response.StatusCode == HttpStatusCode.OK;

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

10-04 10:37