2012-04-09 176 views
0

我几乎完成了我的第一个WP7应用程序,并且希望将其发布到市场。然而,发布的应用程序的规定之一是它在使用过程中不会意外崩溃。处理需要Web服务的应用程序 - 处理EndpointNotFoundExceptions

我的应用程序几乎完全依赖于WCF Azure服务 - 所以我必须随时连接到Internet以使我的函数能够工作(与托管数据库通信) - 包括登录,添加/删除/编辑/搜索客户端等等。

未连接到互联网时,或者在使用过程中连接断开时,调用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(); 
     }); 

编辑:

我的主要问题是如何处理在WP7的EndpointNotFoundException没有应用程序崩溃。

谢谢,

杰拉德。

回答

0

你的代码看起来应该像

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

代码调用LoginAsync,然后立即CloseAsync,我认为这将导致问题......

+0

非常感谢您的提示。我将重新提出问题,询问如何处理EndpointNotFoundExceptions。 – renegade442 2012-04-09 21:58:00

+0

如果你使用我的代码,这个异常也将被处理和显示......我没有看到你的问题...... – 2012-04-09 22:04:34

+0

其实,我没有继续抛出Reference.cs错误 - 现在工作。再次感谢! – renegade442 2012-04-09 22:07:14