2015-11-03 85 views
2

我在公司網絡中。在這個網絡我無法通過IP ping外部網站。我只能像瀏覽器那樣通過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

我知道我有網絡限制,我不能ping通谷歌。但我想通過WebResponse調用它來查看網站是否可用。 – Shadow

+0

從命令行刷新你的dns,看看是否有幫助:ipconfig/flushdns。您也可以運行tracert來查看它跳躍和阻止的位置......在dns處爲10到1。 – 2015-11-03 08:32:08

+0

我沖洗了DNS。 DNS捕獲是空的。我再次嘗試,但它不工作。 – Shadow

回答

0

enter image description here這是我用ping通這對我的作品

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 Iive編輯我的答案,告訴你這是工作 –

+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'並更改一個URL的IP –

+0

@SimonPrice在這裏我加了它的URL,你可以看到它! – mybirthname

+0

pingStatus.Status發生超時。我認爲這是因爲傳出的ping被阻止。 – Shadow

相關問題