2010-11-23 2 views
0

私はブラウザから実行されるSilverlight 4アプリケーションを持っています。また、特定の機能について話すWebサービスもあります。Silverlightでインターネット接続が利用できるかどうかをチェックする方法OOB

インターネット接続が途切れているときにアプリがクラッシュしているため、ウェブサービスが利用可能かどうかを確認する方法を調べようとしています。

+0

を見つけました。 – KenEucker

答えて

4

最も簡単な答えは、Webサービスにリクエストすることです。特定のホストや他の人と話すことができるかどうかをあなたに伝えますが、それはあなたが気にするものではありません。その特定のWebサービスと話すことができるかどうかは気になります。ウェブサービスがダウンしているのは、あなたのアプリに関する限り、インターネットがダウンしていることに相当します。

テストコールとして安価で無害なリクエストを見つけて、それを使用します。もちろん、あなたが接続しているという理由だけで、になっても、数分で1つになるというわけではありません。接続がなくなってもアプリケーションが実際にクラッシュしないようにする必要があります。それは実際にあなたの最優先IMOでなければなりません。

+0

正しい、正しい、正しい。私はインターネットでアクセスしようとしている唯一のものなので、私がウェブサービスに接続することができれば、私が気にするほど多くのインターネットを気にしません。しかし、私が知っているサービスへのリクエストを作成するには、クライアントを作成して、非同期関数の1つを呼び出します。しかし、サービスを利用できないため、クライアントを作成すると内部スレッドでアプリがクラッシュします。 – KenEucker

+0

また、これは私の質問に答えるものではないので、私の解決策にどのようにアプローチすべきかだけを指摘しているので、全く答えはありません。私はこれがどのように答えとしてマークされたのか分かりません。 – KenEucker

+0

@ Epic720:あなたのクライアントが壊れているように聞こえます。テスト要求の後に接続が切断されたときに再度破損する回避策を見つけるのではなく、修正する必要があります。しかし、あなたが話しているクライアントの種類を知らなくてもアドバイスをするのは難しいです。このコードはあなたのコントロール下にありますか?自動生成されたコード?サードパーティのコードですか?どのようなクラッシュですか?あなたは例外とスタックトレースを取得しますか?要求を出さなくてもクライアントを作成*して実際にクラッシュしますか? –

1

私はまだこれに本当の答えを必要とする以下のソリューションに

NetworkChange.NetworkAddressChanged += (sender, e) => 
{ 
    if (NetworkInterface.GetIsNetworkAvailable()) 
    { 
     // network available 
    } 
    else 
    { 
     // network is not available 
    } 
} 

proof link

+0

これはインターネット接続に固有のものではありません。これは、ルータへの接続がある場合に成功し、これはWebサービスの利用が可能なインターネット接続専用ではありません。 – KenEucker