2009-05-28 2 views
0

Мне нужно уметь отличать переадресацию http 302 от моего кода, использующего удаленную сеть .net.Как обращаться с переадресацией HTTP 302 с удаленного узла .net?

Для того, чтобы подключиться к соответствующему URL-адресу, мы попробуем их в порядке, пока не сработает. В большинстве сред первый URL-адрес корректно завершается с помощью System.Net.WebException со статусом WebExceptionStatus.NameResolutionFailure. Для клиентов, использующих OpenDNS, однако это возвращается как ответ HTTP 302, который перенаправляется на страницу руководства. Потому что я использую .net. Remoting redirect игнорируется, и я получаю ошибку System.Runtime.Serialization.SerializationException, которая отличается только сообщением «Конец потока, встречающегося до разбора».

Вот что OpenDNS HTTP ответ: HTTP/1.0 302 Найдено Расположение: http://guide.opendns.com/?url=demonstration.totallyinvalidexceptonmynetwork.com%2Fi%2Fdo%2Fnot%2Fexist.html Content-тип: текст/html Content-Length: 0 Подключение: закрыть Дата: Чт, 28 мая 2009 20:46: 26 GMT Сервер: Руководство по OpenDNS

ответ

0

Я предполагаю, что для отправки запроса вы используете объект HttpWebRequest. Затем вы можете получить ответ в объекте HttpWebResponse, как показано ниже. Тогда вы можете проверить недвижимость response.StatusCode. Если это 302, тогда выполните свою логику.

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
if (response.StatusCode = HttpStatusCode.Found) 
{ 
    //your code here 
} 

Update: Если вы используете System.Net.Webclient, то вы можете использовать вы можете использовать его свойство ResponseHeaders. Here - как вы можете его использовать.

+0

.net remoting не предоставляет HttpWebRequest или WebClient или любые связанные классы. Вызывающий код видит прокси-объект, который похож на тип, вызываемый на сервере. (Да, я знаю, что это было 2 года назад) – sphereinabox