我使用ASP.net / C#创建了一个 Web服务。我在 Windows Phone 7 项目中添加了对 .asmx 文件的服务引用(再次使用C#)。在正常情况下,这很有效。
我需要能够处理Web服务关闭或以其他方式抛出错误的情况。当服务不可用时,我在Reference.cs
文件中收到错误(当我添加服务引用时,这似乎是自动生成的内容),当它尝试获取_result
值时。这个内在的例外是
"The remote server returned an error: NotFound.".
收到错误后,应用程序停止执行。我需要能够捕获此错误,以便应用程序不会停止。
这是我调用以执行我的Web服务的代码。
HighScoresWSSoapClient client = new HighScoresWSSoapClient();
client.LoadUserByANIDCompleted += this.client_LoadUserByANIDCompleted;
client.LoadUserByANIDAsync(this.anid);
我在try/catch
事件中添加了client_LoadUserByANIDCompleted
块。
在调试器中,当我错误时,应用程序的执行停止。如果我按下播放,它会继续进入try/catch
块,它会正确地进入我可以处理它的捕获部分......
但是因为它最初停在_result
行,所以它通常不会到达那一点。我不知道为什么在没有再次播放的情况下它不会冒泡到我的try/catch
并且不确定如何在现实世界中进行这项工作。
我希望这是足够的信息继续下去并且有意义。谢谢你的帮助!
答案 0 :(得分:0)
您应该做的第一件事是启用WCF日志记录并使用服务跟踪查看器查看其输出。有关详细信息,请参阅this previous answer。
答案 1 :(得分:0)
看起来这只是调试器所做的一件奇怪的事情,并且没有办法绕过它。如果您在调试器之外运行此代码,它会将错误冒充到try / catch块,您可以处理它。在调试器内部,您必须按播放才能完成它,但您也可以处理它。