首页 / 知识
在Silverlight中捕获WCF异常的最佳方法?
2023-04-17 06:32:00

Best way to catch a WCF exception in Silverlight?我有一个使用WCF服务的Silverlight 2应用程序。这样,它对服务方法的所有调用都使用异步回调。如果在这些调用之一之前或期间服务未运行,服务崩溃或网络中断等,则将按您期望的那样生成异常。问题是,我不知道如何捕获此异常。
我缺少一个明显的解决方案吗?还是使用Application_UnhandledException卡住了? [编辑] 我在服务方法完成的事件处理程序中检查事件args的Error属性。我没有遇到事件处理程序没有被调用的问题。如果服务器关闭,则调用将花费几秒钟,然后返回,并在Error属性中返回ProtocolException。 假设您尝试过此方法,但实际上从未调用过回调,则可以考虑自定义生成的代理类。请参阅本文。 我找到了一个讨论此话题的论坛主题,它提到最佳实践是使用Error属性。在此线程和我自己的经验之间,这是我可以得出的结论:
我希望这是他们将在最终版本中解决的问题之一。 现在,我将使用Error属性,只处理调试器中断执行的过程。如果太烦人了,我可以关闭ProtocolException的异常中断。 n 在WP7上使用XNA时,我发现我别无选择,只能将try / catch手动添加到各种异步End * FunctionName *()方法中。我尝试过的其他任何事情都不会阻止应用程序失败 使用自定义WCF代理生成器是在Silver-light中处理异步异常的好方法。单击此处下载源代码。 使用Silverlight 3,Visual Studio调试器可以捕获这些异常,因此,永远不会到达令人困惑的异常处理程序。但是,在没有调试器的情况下运行时,将按预期方式调用异常处理程序。我猜只要知道这一点就可以。我承认我浪费了几个小时试图弄清楚如何深入了解Silverlight / Wcf / Browser的内部工作原理,以解决我的异常情况。不要去那里。 我不是水管工,所以我决定创建自己的WCF服务类,该类重写由Visual Studio自动生成的类文件" reference.cs"的某些功能,然后我添加了自己的try /捕获块以捕获通信错误。 我创建的类如下所示:
OOpps .... 对不起,我的答案是错误的(MSFT家伙没打过写答案服务回调,是在同一UI线程上调用的),事实是 更多信息:
我的猜测与Visual Studio选项和拦截异常有关。 更多信息,在此主题中 非常有趣的话题。 您可能会忘记asyn客户端回调上的Application_UnhandledException,原因如下: Application_UnhandledException仅UI线程上触发的异常可以被Application.UnhandledExceptions 捕获 这意味着...根本不为WCF异步调用:-)调用。 检查来自MSFT的详细回复 http://silverlight.net/forums/t/21828.aspx 您好,Application.UnhandledExceptions只能捕获UI线程上触发的异常。它无法捕获其他线程的异常。您可以尝试解决该问题:在Visual Studio中,从"调试"菜单中选择"异常"。然后检查"公共语言运行时异常"。每当抛出异常时,这将使调试器停止。但是请注意,有时这可能会很烦人,因为即使已经捕获到异常。您可以使用CheckBoxes筛选要捕获的异常。 在我的情况下,好消息是,如果不进行调试,仅在clietn服务回调中处理错误消息就足够了。 谢谢
|
最新内容
相关内容
纯命令行linux服务器?
纯命令行linux服务器?,密码,服务,系统,命令,终端,地址,百度,情况,状态,公共,在linux下如何访问服务器首先,连接相应linux主机,进入到linux命令行重启服务linux命令?
重启服务linux命令?,网络,系统,服务,设备,工作,标准,名称,工具,命令,管理,Linux的重启命令有哪些1、linux重启命令有五个,分别如下:shutdown。polinux下命令访问服务?
linux下命令访问服务?,服务,密码,状态,信息,地址,网络,认证,系统,号码,名称,linux中远程访问的命令步骤如下:查询\安装SSH服务 (1)登陆linux系统检查linux服务器命令?
检查linux服务器命令?,系统,信息,状态,情况,时间,工具,网络,环境,服务,电脑,如何查看linux服务器的版本和配置信息?1、登录到linux服务器执行llinux7关闭服务命令?
linux7关闭服务命令?,系统,软件,服务,命令,电脑,状态,工具,管理,进程,用户,求Linux关机命令详解shutdown命令 shutdown命令用于安全关闭Linuxlinux服务器域名命令?
linux服务器域名命令?,地址,信息,系统,网络,服务,环境,名称,网站,管理,电脑,linux临时启动域名解析服务的命令是1、在linux环境下能实现域名的服务启动linux命令?
服务启动linux命令?,服务,密码,信息,系统,名称,命令,文件,用户,下面,服务器,linux如何启动mysql服务1、首先,我们需要修改mysql的配置文件,一般linux服务器命令框?
linux服务器命令框?,系统,情况,状态,信息,数据,软件,指标,服务,在线,工具,linux系统怎样查看服务器性能命令1、使用top命令 top命令是一个常用linux调用函数的命令?
linux调用函数的命令?,系统,代码,策略,上调,时间,设计,通信,网络,设备,项目,如何在Linux内核里增加一个系统调用?在一个进程中创建3个线程,名字服务器linux命令教程?
服务器linux命令教程?,系统,地址,密码,网络,设备,工作,服务,标准,连续,管理,重启服务器的linux命令1、首先我首要把linux开机, 命令 rebot 这个linux删除服务的命令?
linux删除服务的命令?,服务,系统,软件,平台,名称,管理,环境,产品,命令,文件,在linuxcentos系统里面怎么用命令删除服务1、这里主要解决使用rpmlinux开机服务命令行?
linux开机服务命令行?,系统,工作,地址,信息,服务,设备,数字,第一,设计,发行,linux常用命令有哪些1、linux系统常用操作命令linux系统常用操作