使用Web服务从后台检索应用程序时如何解决Windows Phone 8应用程序中的错误?

时间:2014-03-23 09:31:15

标签: web-services windows-phone-7 soap windows-phone-8 windows-phone

我正在开发应用程序并在使用Web服务时遇到问题。

在请求网络服务的任何网页上,如果应用程序在请求完成之前转到后台(例如通过搜索或菜单按下),则当我再次从后台检索应用程序时会导致错误:

  

通过HTTP通道传输数据时发生错误(类型' System.Net.WebException'出现异常。)。

针对此问题的任何解决方案?

3 个答案:

答案 0 :(得分:2)

当您的应用程序发送到后台时,它将被暂停,因此所有连接都将被切断。你无能为力。只需捕获错误并重试对Web服务的调用。

答案 1 :(得分:2)

重新激活应用程序时,需要再次调用Web服务。一种方法是维护bool变量标志。

  • 在启动Web服务时将其设置为true。
  • 收到回复时将其设置为false
  • Application_Activated事件处理程序(App.xaml.cs)中的
  • 检查flag的状态,如果该标志为true,则再次调用webservice。

否则,如果您只想让您的网络服务在锁定屏幕下运行,请设置

PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;

答案 2 :(得分:1)

如果您的应用程序进入后台,您的网络服务请求无法完成,您无法做任何事情。 但你可以防止崩溃 当您知道应用程序正在进入后台(可能在onNavigatedFrom()时,您将先前附加到xxCompleted事件的处理程序处理处理程序中的抛出异常xxCompleted以同样的方式。第一个解决方案意味着您的服务客户端对象必须是类成员(私有),否则它不会在onNavigatedFrom()范围内。要在以后完成请求,您可以使用标记(bool successful, required)并在OnNavigatedTo()中执行以下操作:

if(required && !successful)
{
    // make the request again
} 

仍然会在生成的参考文件中捕获异常,但应用程序不会崩溃,并且您知道何时需要再次进行网络请求。


当我尝试获取sas uri并同时调用PhotoChooserTask.show()时,我发现了同样的问题。所以我必须确保在调用PhotoChooserTask.show()之前完成webrequest。