在Silverlight中捕获WCF异常的最佳方法?

在Silverlight中捕获WCF异常的最佳方法?,第1张

概述我有一个使用WCF服务的Silverlight 2应用程序.因此,它使用异步回调对服务方法的所有调用.如果服务没有运行,或者在其中一个呼叫之前或之中崩溃,或者网络出现故障,则会根据您的期望生成异常.问题是,我不知道如何抓住这个异常. >因为它是一个异步调用,所以我不能用try / catch块来包装我的开始调用,并且在程序从那个位置移动之后,它会接收到一个异常. 因为服务代理是自动生成的,所以我不 我有一个使用WCF服务的Silverlight 2应用程序.因此,它使用异步回调对服务方法的所有调用.如果服务没有运行,或者在其中一个呼叫之前或之中崩溃,或者网络出现故障,则会根据您的期望生成异常.问题是,我不知道如何抓住这个异常.

>因为它是一个异步调用,所以我不能用try / catch块来包装我的开始调用,并且在程序从那个位置移动之后,它会接收到一个异常.
因为服务代理是自动生成的,所以我不能在调用EndInvoke的每一个生成的函数(实际显示异常的地方)放置一个try / catch块.这些生成的函数也被调用堆栈中的外部代码包围,所以堆栈中没有其他地方也可以尝试/捕获.
>我不能把try / catch放在我的回调函数中,因为异常发生在被调用之前.
>我的App.xaml.cs中有一个Application_UnhandledException函数,它捕获所有未处理的异常.我可以使用这个,但它似乎是一个凌乱的方式来做到这一点.我宁愿将这个功能保留在真正意想不到的错误(也就是错误)中,而不是以这种方式处理的每种情况都不会在这个函数中使用代码.

我缺少一个明显的解决方案吗?或者我卡住了Application_UnhandledException?

[编辑]
如下所述,Error属性正是我正在寻找的.扔我一个循环是什么是异常被抛出并且似乎被忽略的事实,但执行能够继续.它触发Application_UnhandledException事件并导致VS2008中断执行,但在调试器中继续允许执行继续.这不是一个真正的问题,只是看起来很奇怪.

解决方法 我在服务方法完成事件处理程序中检查事件args的Error属性.我没有遇到事件处理程序没有被调用的问题.在服务器关闭的情况下,调用需要几秒钟,然后在Error属性中返回一个ProtocolException.

假设您已经尝试过此回调,并且您的回调真的永远不会被调用,那么您可以查看自定义生成的代理类.见this article.

总结

以上是内存溢出为你收集整理的在Silverlight中捕获WCF异常的最佳方法?全部内容,希望文章能够帮你解决在Silverlight中捕获WCF异常的最佳方法?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1004156.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存