2015-11-03 2 views
2

Я в сети компании. В этой сети я не могу пинг внешних сайтов по IP. Я могу назвать их только по URL-адресу, например браузеру. Вот почему я использую WebRequest.Удаленное имя не может быть разрешено «www.google.com»

Когда я пытаюсь позвонить «www.google.com», я получил «удаленное имя не может быть разрешено (www.google.com)».

У меня нет заблокированной записи в моем брандмауэре. С помощью этого кода я могу вызывать внутренние веб-сайты, но не внешние.

Это мой код:

public void pingIP() 
    { 
     try 
     { 

      var url = uriBuilder; 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url.Uri); 
      //request.Accept = "*/*"; 
      //request.UseDefaultCredentials = true; 
      //request.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; 
      //request.UserAgent = "Foo"; 
      //request.Accept = "*/*"; 
      request.Method = "HEAD"; 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

      _PingByURL = response.StatusCode == HttpStatusCode.OK; 
     } 
     catch 
     { 

     } 

    } 

В app.config:

<system.net> 
     <defaultProxy enabled ="true" useDefaultCredentials = "true"> 
     <proxy usesystemdefault ="True" bypassonlocal="True"/> 
     </defaultProxy> 
    </system.net> 

Как я могу разрешить удаленное имя? И этот быстрый и самый чистый способ проверить, доступен ли сайт по URL-адресу?

Спасибо!

+0

Я знаю, что у меня есть сетевые ограничения, которые я не могу выполнить для Google. Но я хочу называть его WebResponse, чтобы узнать, доступен ли сайт. – Shadow

+0

Сбросьте свои dns из командной строки и посмотрите, поможет ли это: ipconfig/flushdns. Вы также можете запустить tracert, чтобы увидеть, где он прыгает и блокирует ... 10 к одному в dns. –

+0

Я покраснел dns. Улов dns пуст. Я попытался снова, но он не работает. – Shadow

ответ

0

enter image description here это то, что я использую для пинг, который работает для меня

public bool ConnectedToInternet() 
    { 
     var myPing = new Ping(); 
     const string host = "google.com"; 
     var buffer = new byte[32]; 
     const int timeout = 1000; 
     var pingOptions = new PingOptions(); 
     var reply = myPing.Send(host, timeout, buffer, pingOptions); 
     return reply != null && reply.Status == IPStatus.Success; 

    } 

попробовать это и дайте мне знать, если вы получите ответ или нет

+0

Ошибка: var reply = myPing.Send (host, timeout, буфер, pingOptions); "Хост не найден"; Я изо всех сил пытаюсь выполнить ваш код. – Shadow

+0

@ Shadow ive только что отредактировал мой ответ, чтобы показать вам, что это работает –

+0

Я думаю, что это из-за внутренних dns, может быть? Все еще получил то же сообщение с «HostNotFound». – Shadow

1

Это работает без проблем!

static void Main(string[] args) 
{ 
    Console.WriteLine(PingTest()); 
} 

public static bool PingTest() 
{ 
    Ping ping = new Ping(); 

    PingReply pingStatus = ping.Send(IPAddress.Parse("208.69.34.231")); 
    //For the web address you need ! 
    //PingReply pingStatus = ping.Send("www.google.com"); 

    return pingStatus.Status == IPStatus.Success; 

} 

Возможно, у вас есть сетевые ограничения, и вы из-за них терпите неудачу.

+0

Я согласен, что это работает, но если вы хотите использовать этот ответ и работаете с URL-адресом, удалите 'IPAddress.Parse' и измените ip для URL-адреса –

+0

@SimonPrice Здесь я добавил его с URL-адресом, вы можете его увидеть! – mybirthname

+0

pingStatus.Status получил таймаут. Я думаю, это потому, что исходящие звонки заблокированы. – Shadow

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