HttpWebResponseリモートサーバはエラーを返します:(500)内部サーバエラー.

1440 ワード

げんしょう
実装実装要求のページを符号化する場合、要求されたコードは次のコードに似ています.
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);
req.UserAgent = "MSIE6.0";
req.Method = "GET";
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream(), strEncode);
strHtml = sr.ReadToEnd();
sr.Close();
res.Close();

しかし、私たちが要求したこのページがちょうど異常が発生したページであるか、存在しないページである場合.上のコードは
req.GetResponse();

ここで例外を放出:リモート・サーバがエラーを返します:(500)内部サーバエラー.
上記のコードでは,エラー発生時のページソースコードは得られない.
 
原因を分析する
(HttpWebResponse)req.GetResponse(); この行のコードでは、次のことが行われています.
サーバセグメントASP.NetプログラムにExceptionが発生した場合、クライアントアプリケーションがHTTPプロトコルエラーを受け入れた後.このHTTPプロトコルエラーをStatusに変換してWebExceptionStatusに設定する.ProtocolErrorのWebException、そしてこの異常throwを出します.
 
問題を解決する
エラーが発生したときのサーバセグメントエラーページのソースコードを取得するにはどうすればいいですか?
実は非常に簡単な方法で、エラーが発生するかどうかにかかわらず、次のコードでサーバセグメントページのソースコードを得ることができます.
 HttpWebResponse res;
try
{
res = (HttpWebResponse)req.GetResponse();
}
catch (WebException ex)
{
res = (HttpWebResponse)ex.Response;
}
StreamReader sr = new StreamReader(res.GetResponseStream(), strEncode);
strHtml = sr.ReadToEnd();
 ,WebException   StatusCode   HTTP  ,  Response   WebResponse,
  HTTP  。