2013-07-30 5 views
1

Я пытаюсь этот код ..C# - HttpWebRequest код состояния возвращается 200 вместо 404

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.goo4le.com/"); 
request.Method = "HEAD"; 
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
{ 
    Console.Write((int)response.StatusCode); 
} 

goo4le не является существующий домен. Поэтому он должен возвращать 404. Вместо этого он возвращает 200 статусов.

Я думаю, это из-за моего провайдера широкополосного доступа, используя пользовательскую страницу 404.

This is what i see, когда я ввожу goo4le.com в мой браузер.

Может ли кто-нибудь сказать мне, как получить настоящий статус http, а не статус моего браузера?

+0

Я получаю исключение «Удаленное имя не может быть разрешено:« www.goo4le.com »« – Nilesh

ответ

1

Я действительно не получаю код статуса при запуске этого, я получаю ошибку DNS, говоря, что я не могу найти домен.

Я предполагаю, что вы совершенно прав в отношении провайдера, они могут делать это с помощью перенаправления DNS, если вы не получите эту ошибку. Вы могли бы решить эту проблему с помощью DNS-сервера, отличного от предоставляет ваш провайдер, попробуйте Googles 8.8.8.8, 8.8.4.4 (https://developers.google.com/speed/public-dns/)

Это из их часто задаваемых вопросов

Как Google Public DNS отличается от службы DNS моего ISP или других открытых DNS-решений? Как я могу узнать, лучше ли это?

Открытые преобразователи и Ваш провайдер услуг предлагает услуги разрешения DNS. Мы приглашаем вас попробовать Google Public DNS в качестве основного или вторичного DNS-преобразователя вместе с любыми другими альтернативными службами DNS. Есть много вещей, чтобы рассмотреть при определении DNS-резольвера, который работает на вас, например, скорость, надежность, безопасность и достоверность ответов. В отличие от Google Public DNS, некоторые интернет-провайдеры и открытые резольверы блокируют, фильтруют или перенаправляют DNS-запросы .

Как Google Public DNS обрабатывает несуществующие домены?

Если вы выдаете запрос на имя домена, который не существует, Google Public DNS всегда возвращает запись NXDOMAIN, согласно протоколу DNS стандартам. Браузер должен отображать этот ответ как ошибку DNS. Если вместо вы получите ответ, отличный от сообщения об ошибке (например, для , вы перенаправлены на другую страницу), это может быть результатом следующего: клиентское приложение, такое как браузерный плагин отображает альтернативную страницу для несуществующего домена. Некоторые интернет-провайдеры могут перехватывать и заменять все ответы NXDOMAIN ответами, которые ведут к собственным серверам. Если вы обеспокоены тем, что ваш интернет-провайдер , перехватывая запросы или ответы Google Public DNS, вы должны связаться со своим интернет-провайдером.

0

Вы можете попытаться отключить перенаправление, к сожалению, я не могу его протестировать, так как у меня есть другой провайдер (если это проблема).

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.goo4le.com/"); 
request.Method = "HEAD"; 
request.AllowAutoRedirect = false; 
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
{ 
    Console.Write((int)response.StatusCode); 
} 

, если он работает, то, скорее всего, бросить исключение, так как все, что возвращает StatusCode, что это не 200 кидает один ...... если вы хотите поймать его попробовать это:

try 
{ 
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.goo4le.com/"); 
    request.Method = "HEAD"; 
    request.AllowAutoRedirect = false; 
    using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) 
{ 
    Console.Write((int)response.StatusCode); 
} 

} 
catch (WebException e) 
{ 
    // in this case it was a status code exception (not status 200...) 
    if (e.Response != null) Console.Write((int)e.Response.StatusCode); 
    else throw; 
} 
+0

ваш код возвращает 200 статус для goo4le.com :( – Giri

 Смежные вопросы

  • Нет связанных вопросов^_^