2012-04-09 10 views
0

私は最初のWP7アプリケーションをほぼ完成しており、市場に公開したいと考えています。しかし、公開されたアプリの規定の1つは、使用中に予期せずクラッシュしてはならないということです。Webサービスを必要とするアプリケーションの処理 - EndpointNotFoundExceptionsを扱う

私のアプリケーションはほぼ完全にWCF Azureサービスに依存しているので、ログイン、追加/削除/編集/検索クライアントを含む機能(インターネット上のデータベースとの通信)をインターネットに常時接続する必要があります等々。

インターネットに接続していない場合、または使用中に接続が切断された場合、Webサービスを呼び出すとアプリケーションが終了します。これをどうすれば処理できますか?私は、サービスへの接続の失敗が捕捉され、例外を処理できると考えましたが、この方法では機能しません。

 LoginCommand = new RelayCommand(() => 
     { 
      ApplicationBarHelper.UpdateBindingOnFocussedControl(); 
      MyTrainerReference.MyTrainerServiceClient service = new MyTrainerReference.MyTrainerServiceClient(); 

      // get list of clients from web service 
      service.LoginCompleted += new EventHandler<LoginCompletedEventArgs>(service_LoginCompleted); 

      try 
      { 
       service.LoginAsync(Email, Password); 
      } 
      **catch (Exception ex) 
      { 
       throw new Exception(ex.Message); 
      }** 
      service.CloseAsync(); 
     }); 

EDIT:

私の主な問題は、アプリケーションがクラッシュすることなく、WP7でEndpointNotFoundExceptionを処理する方法です。

ありがとう、

Gerard。

答えて

0

あなたのコードは、あなたのコードはCloseAsyncその後すぐLoginAsyncを呼び出すと、私はこれが問題を引き起こすだろうと思い

LoginCommand = new RelayCommand(Login); 
... 

public void Login() 
{ 
    var svc = new MyTrainerReference.MyTrainerServiceClient(); 
    try 
    { 
     svc.LoginCompleted += LoginCompleted; 
     svc.LoginAsync(); 
    } 
    catch (Exception e) 
    { 
     svc.CloseAsync(); 
     ShowError(e); 
    } 
} 

private void LoginCompleted(object sender, LoginCompletedEventArgs e) 
{ 
    ((MyTrainerReference.MyTrainerServiceClient)sender).LoginCompleted -= LoginCompleted; 
    ((MyTrainerReference.MyTrainerServiceClient)sender).CloseAsync(); 

    if (e.Error == null && !e.Cancelled) 
    { 
     // TODO process e.Result 
    } 
    else if (!e.Cancelled) 
    { 
     ShowError(e.Error); 
    } 
} 

private void ShowError(Exception e) 
{ 
    // TODO show error 
    MessageBox.Show(e.Message, "An error occured", MessageBoxButton.OK); 
} 

のようになります...

+0

は、ヒントをありがとうございました。私は、EndpointNotFoundExceptionsをどう扱うかを尋ねる質問に言い換えるつもりです。 – renegade442

+0

私のコードを使用すると、この例外も処理され、表示されます...あなたの問題は表示されません... –

+0

実際には、私はReference.csエラーをスローアップし続けていませんでした。再度、感謝します! – renegade442