Почему System.Net.Browser.ClientHttpWebRequest возвращает 404 при доступе к неверному адресу сервера?
Похоже, что Microsoft System.Net.Browser.ClientHttpWebRequest создает исключение WebException с кодом состояния NotFound, который соответствует ответу 404 сервером при доступе к недопустимому IP-адресу, на котором не работает ни один сервер. Правильный ответ не является кодом состояния HTTP и определенно не находится в диапазоне 400, поскольку клиентская библиотека никогда не имела возможности общаться с действительным сервером HTTP. Это проблематично для моего кода, потому что 404 имеет особое значение, когда возвращается моей конечной точкой сервера.
Есть ли способ определить, когда сервер на самом деле возвращал ответ 404 (NotFound), а не использовать его неправильно для описания общего сбоя подключения с классом System.Net.Browser.ClientHttpWebRequest?
Обратите внимание, что такое поведение происходит для меня на WP8.
1 ответ
У меня была та же проблема, и перехват System.Net.WebException и вставка приведенных ниже строк кода в оператор catch позволили мне получить реальный ответ, возвращаемый сервером:
catch(System.Net.WebException we)
{
using (var streamResponse = we.Response.GetResponseStream())
{
using (var streamRead = new StreamReader(streamResponse))
{
string responseString = streamRead.ReadToEnd();
// do something with responseString
}
}
}
}