HttpWebResponse遠程服務器返回錯誤: 內部服務器錯誤
錯誤代碼
現(xiàn)象
我們編碼實現(xiàn)請求一個頁面時,請求的代碼類似如下代碼:
HttpWebRequestreq=WebRequest.Create;
req.UserAgent="MSIE6.0";
req.Method="GET";
HttpWebResponseres=req.GetResponse;
StreamReadersr=newStreamReader,strEncode);
strHtml=sr.ReadToEnd;
sr.Close;
res.Close;
但是,如果我們請求的這個頁面正好是一個有異常發(fā)生的頁面,或者不存在的頁面。我們上面的代碼就會在
req.GetResponse;這里拋出異常:遠程服務器返回錯誤:)內部服務器錯誤。
我們通過上面的代碼,是不能得到錯誤發(fā)生時候的頁面源代碼的。
分析原因:
req.GetResponse;這行代碼中做了如下一件事情:
當服務器段ASP.net程序有Exception發(fā)生時,客戶端應用程序接受了HTTP協(xié)議錯誤后。把這個HTTP協(xié)議錯誤轉換成Status設置為WebExceptionStatus.ProtocolError的WebException,并且把這個異常throw出來。
解決問題
那如果我們想獲得錯誤發(fā)生時候服務器段錯誤頁面的源代碼該如何做呢?
其實非常非常簡單的做法,我們用下面的代碼就不論錯誤發(fā)生與否,都可以獲得服務器段頁面的源代碼。
HttpWebResponseres;
try
{
res=req.GetResponse;
}
catch
{
res=ex.Response;
}
StreamReadersr=newStreamReader,strEncode);
strHtml=sr.ReadToEnd;
當異常發(fā)生事后,WebException中不僅有StatusCode標志著HTTP的錯誤代碼,而且它的Response屬性還包含由服務器發(fā)送的WebResponse,
來指示遇到的實際HTTP錯誤。
Tags:錯誤代碼,HttpWebResponse遠程服務器返回錯誤: 內部服務器錯誤
版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
關注官方微信