我正在开发应用程序并在使用Web服务时遇到问题。
在请求网络服务的任何网页上,如果应用程序在请求完成之前转到后台(例如通过搜索或菜单按下),则当我再次从后台检索应用程序时会导致错误:
通过HTTP通道传输数据时发生错误(类型' System.Net.WebException'出现异常。)。
针对此问题的任何解决方案?
答案 0 :(得分:2)
当您的应用程序发送到后台时,它将被暂停,因此所有连接都将被切断。你无能为力。只需捕获错误并重试对Web服务的调用。
答案 1 :(得分:2)
重新激活应用程序时,需要再次调用Web服务。一种方法是维护bool变量标志。
否则,如果您只想让您的网络服务在锁定屏幕下运行,请设置
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。