NetworkInterface.GetIsNetworkAvailable() メソッドが Windows Phone 7 デバイスでデバッグすると常に true を返すのはなぜですか?インターネットにアクセスできるネットワークにデバイスが接続されているかどうかを検出するにはどうすればよいですか? このリンク、Zune-Detection-and-Network-Awareness を試しましたが、NetworkInterface.GetIsNetworkAvailable() メソッドは常に true を返します。
1 に答える
メソッドのドキュメントをお読みください。これがMSDNが言っていることです:
ネットワークインターフェースが「アップ」とマークされており、ループバックまたはトンネルインターフェースではない場合、ネットワーク接続は使用可能であると見なされます。
デバイスまたはコンピューターが有用なネットワークに接続されていないが、それでも使用可能であると見なされ、 GetIsNetworkAvailableがtrueを返す場合が多くあります。たとえば、アプリケーションを実行しているデバイスがプロキシを必要とするワイヤレスネットワークに接続されているが、プロキシが設定されていない場合、GetIsNetworkAvailableはtrueを返します。GetIsNetworkAvailableがtrueを返す 別の例は、ハブまたはルーターがアップストリーム接続を失ったハブまたはルーターに接続されているコンピューターでアプリケーションが実行されている場合です。
一般的に、この方法は一般的にエラーが発生しやすいと言えます。失敗したリクエストのアプローチを取ることをお勧めします-テストするURLをいくつか用意し、HTTP/DNS解決リクエストが通過するかどうかを確認します。それらのいくつかが合格した場合-接続があります。すべてが失敗した場合-接続されていない可能性があります。
これがサンプルです。