2012-04-09 6 views
0

Ich bin fast fertig meine erste WP7-Anwendung, und ich möchte es auf dem Marktplatz veröffentlichen. Eine der Bedingungen für eine veröffentlichte App ist jedoch, dass sie während der Verwendung nicht unerwartet abstürzen darf.Handhabung App, die Web-Service erfordert - Umgang mit EndpointNotFoundExceptions

Meine Anwendung basiert fast vollständig auf einem WCF Azure Service - daher muss ich ständig mit dem Internet verbunden sein, damit meine Funktionen funktionieren (Kommunikation mit einer gehosteten Datenbank) - einschließlich Login, Hinzufügen/Löschen/Bearbeiten/Suchen von Clients und so weiter.

Wenn keine Verbindung zum Internet besteht oder die Verbindung während der Verwendung unterbrochen wird, führt ein Aufruf an den Webdienst zum Beenden der Anwendung. Wie kann ich damit umgehen? Ich dachte mir, dass der Fehler beim Verbinden mit dem Dienst aufgefangen werden würde und ich die Ausnahme behandeln könnte, aber es funktioniert nicht so.

 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:

Mein Hauptproblem ist, wie die EndpointNotFoundException in WP7 ohne die Anwendung abstürzt zu handhaben.

Danke,

Gerard.

Antwort

0

sollte Ihr Code aussehen

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); 
} 

Ihr Code LoginAsync ruft und dann sofort CloseAsync, ich glaube, dies zu Problemen führen wird ...

+0

Vielen Dank für die Tipps. Ich werde die Frage neu formulieren, um zu fragen, wie mit EndpointNotFoundExceptions umzugehen ist. – renegade442

+0

Wenn Sie meinen Code verwenden, wird diese Ausnahme auch gehandhabt und angezeigt ... Ich sehe Ihr Problem nicht ... –

+0

Eigentlich war ich nicht weiter nach der Reference.cs Fehler, der ausgelöst wurde - jetzt arbeiten. Danke noch einmal! – renegade442

Verwandte Themen