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