Warum gibt GetIsNetworkAvailable() immer true zurück?

Warum gibt GetIsNetworkAvailable() immer true zurück?

Ich denke, diese Methode ist angemessener:

   public static bool getIsInternetAccessAvailable()
    {
        switch(NetworkInformation.GetInternetConnectionProfile().GetNetworkConnectivityLevel())
        {
            case NetworkConnectivityLevel.InternetAccess:
                return true;
            default:
                return false;
        }
    }

Bitte korrigieren Sie mich, wenn ich falsch liege, aber soweit ich sehen kann, ist die Methode, die Sie verwenden, die Überprüfung des Netzwerks Konnektivität und nicht unbedingt Internet Konnektivität. Ich würde annehmen, wenn Sie sich in einem beliebigen Netzwerk befinden, würde dies unabhängig davon, ob das Internet verfügbar ist oder nicht, wahr sein. Sehen Sie sich das an.

Mir ist aufgefallen, dass eine Möglichkeit zum Überprüfen der Internetverbindung wie folgt ist:

private bool IsInternetAvailable()
{
    try
    {
        Dns.GetHostEntry("www.google.com"); //using System.Net;
        return true;
    } catch (SocketException ex) {
        return false;
    }
}

Der obige Code kann (in VB.Net durch Lesen des Kommentars von Joacim Andersson [MVP]) im folgenden Beitrag gefunden werden.

Hinweis:Die letzte Änderung wurde von AceInfinity vorgeschlagen, aber in der Community-Überprüfung abgelehnt. Mein Ruf ist zu niedrig, um dies zu überschreiben, also habe ich die Änderung selbst vorgenommen.


Von msdn:

Eines dieser Beispiele könnte auf Ihren Fall zutreffen: