Asp.net httpwebresponse - Как я могу не зависеть от WebException для управления потоком?
-
25-09-2019 - |
Вопрос
Мне нужно проверить, вернет ли запрос на внутреннюю ошибку 500 серверов или нет (поэтому ожидается, что ошибка ожидается). Я делаю это:
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, и я не хочу зависеть от него, чтобы контролировать поток приложений - как это может быть сделано?
Решение 2
Действительно, учитывая пример в 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);
}
Видимо, иногда вам нужно идти по этому пути. Ах хорошо.
Другие советы
Я думаю, что эта статья MSDN поможет вам:
http://msdn.microsoft.com/en-us/library/system.net.webException.status.aspx.
Не связан с StackOverflow