【发布时间】:2014-01-03 06:44:01
【问题描述】:
现在我正在开发一个使用 Azure 服务的 Windows Phone 8 应用程序
但是我遇到了一个异常如下:
System.Net.WebException: The remote server returned an error: NotFound.
at System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
at System.Net.Browser.ClientHttpWebRequest.<>c__DisplayClasse.<EndGetResponse>b__d(Object sendState)
at System.Net.Browser.AsyncHelper.<>c__DisplayClass1.<BeginOnUI>b__0(Object sendState)
--- End of inner exception stack trace ---
at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
Stack trace:
at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
at CaptWP.CAPTService.Service1Client.Service1ClientChannel.EndgetRandomID(IAsyncResult result)
at CaptWP.CAPTService.Service1Client.CaptWP.CAPTService.IService1.EndgetRandomID(IAsyncResult result)
at CaptWP.CAPTService.Service1Client.OnEndgetRandomID(IAsyncResult result)
at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)
查看Azure服务器后,发现Azure因账户余额不足而停止服务。
但是如何解决客户端的问题呢?也许有时服务器不可用或断开连接。在我的应用中几乎所有的动作都需要从服务器获得响应,所以我必须解决这个应用不稳定的问题。
我想在每个操作中添加try....catch.... 以与服务器通信,但 Windows Phone 8 中的引用方法是异步的
service.getRandomIDAsync();
private void service_getRandomIDCompleted(object sender, CAPTService.getRandomIDCompletedEventArgs e)
{
string id = e.Result.ToString();
}
如何捕捉异常?另外我必须在我的代码中添加这么多 try..catch 块。所以我想在Service References中的Reference.cs中添加
任何人都可以提供解决方案?还是更好的方法?
【问题讨论】:
-
现在您收到“远程服务器返回错误:未找到。”而且,您想了解实际的异常吗?
-
@AmanKhandelwal,当然,我只是想解决问题以防止程序崩溃。而现在我的服务器运行良好,但可能有时服务器不可用或断开连接,就会出现此异常。
-
对于 Windows Phone,很多时候(由于一些遗留问题)任何 HTTP 错误代码都会返回为“NotFound” - 您需要在调试器中检查内部异常和其他属性(甚至强制转换到 Http*) 以了解有关失败的更多信息。例如,这也可以是 HTTP 500。
标签: c# wcf windows-phone-7 azure windows-phone-8