Asp.net HttpWebResponse - как я могу не зависеть от WebException для управления потоком? - PullRequest
1 голос
/ 09 июня 2010

Мне нужно проверить, будет ли запрос возвращать 500 Server Internal Error или нет (поэтому ожидается получение ошибки). Я делаю это:

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 Internal Server Error, выдается исключение WebException, и я не хочу зависеть от него для управления потоком приложений - как это можно сделать?

Ответы [ 2 ]

1 голос
/ 09 июня 2010

Я думаю, что эти статьи MSDN помогут вам:http://msdn.microsoft.com/en-us/library/system.net.webexception.status.aspx

0 голосов
/ 09 июня 2010

Действительно, учитывая пример в 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);
}

Видимо, иногда вам нужно идти по этому пути.Ах, хорошо.

...