1

Je dois vérifier si la requête retournera une erreur interne du serveur 500 ou pas (ainsi l'erreur est attendue). Je fais ceci:Asp.net HttpWebResponse - comment ne pas dépendre de WebException pour le contrôle de flux?

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; 

Mais quand je reçois l'erreur 500 Internal Server, un WebException est jeté, et je ne veux pas dépendre pour contrôler le flux d'application - comment cela peut-il être fait?

Répondre

-1

En effet, étant donné l'exemple à msdn, il n'y a pas moyen de ne pas dépendre de l'exception pour les flux de contrôle. Voici l'exemple qu'ils donnent:

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); 
} 

Apparemment, vous devez parfois suivre cette voie. Et bien.