1

我需要檢查請求是否會返回500服務器內部錯誤(所以得到錯誤是預期的)。我這樣做:Asp.net HttpWebResponse - 我怎樣才能不依賴WebException流量控制?

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
request.Method = "GET"; 
HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

if (response.StatusCode == HttpStatusCode.OK) 
    return true; 
else 
    return false; 

但是,當我得到的500內部服務器錯誤,引發WebException,我不想依賴它來控制應用程序的流程 - 如何才能做到這一點?

回答

-1

事實上,由於在MSDN中的例子,有沒有辦法不依賴於異常的控制流上。下面是他們給出的例子:

try { 
    // Create a web request for an invalid site. Substitute the "invalid site" strong in the Create call with a invalid name. 
    HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create("invalid site"); 

    // Get the associated response for the above request. 
    HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse(); 
    myHttpWebResponse.Close(); 
} 
catch(WebException e) { 
    Console.WriteLine("This program is expected to throw WebException on successful run."+ 
         "\n\nException Message :" + e.Message); 
    if(e.Status == WebExceptionStatus.ProtocolError) { 
     Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode); 
     Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription); 
    } 
} 
catch(Exception e) { 
    Console.WriteLine(e.Message); 
} 

顯然,有時你必須走下那條路。呃,好吧。