Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Silverlight应用程序中的错误处理_.net_Silverlight_Silverlight 4.0_Error Handling - Fatal编程技术网

.net Silverlight应用程序中的错误处理

.net Silverlight应用程序中的错误处理,.net,silverlight,silverlight-4.0,error-handling,.net,Silverlight,Silverlight 4.0,Error Handling,如何处理Sivlerlight应用程序中发生的任何错误的最佳方法 我不是在谈论开发环境中的错误处理 但是,记录错误并查找错误以供将来参考的最佳方法是什么?我通常不喜欢仅仅依靠Silverlight以有意义的方式向客户端显示错误(即“加载数据时出现问题…”)。相反,我更喜欢包装异常,并通过一个WCF服务向我的服务器回调,该服务使用一个公开的方法来接受Silverlight异常作为参数。进入服务器后,您可以将其记录到事件日志、文本日志、发送给支持组的电子邮件等 这里真正的关键是将异常信号从客户端发送

如何处理Sivlerlight应用程序中发生的任何错误的最佳方法

我不是在谈论开发环境中的错误处理


但是,记录错误并查找错误以供将来参考的最佳方法是什么?

我通常不喜欢仅仅依靠Silverlight以有意义的方式向客户端显示错误(即“加载数据时出现问题…”)。相反,我更喜欢包装异常,并通过一个WCF服务向我的服务器回调,该服务使用一个公开的方法来接受Silverlight异常作为参数。进入服务器后,您可以将其记录到事件日志、文本日志、发送给支持组的电子邮件等


这里真正的关键是将异常信号从客户端发送到服务器,以便以最佳和最具传染性的方式进行处理。

我使用的技术是同时记录到服务器和客户端。您可以通过一个入口点,一个包含许多静态方法的
Log
类,或者一个您喜欢的单例来实现。然后可以将其配置为只执行客户端日志记录、只执行服务器日志记录、两者都执行或不执行


然后,客户机日志可以显示在一个不引起恐慌的对话框中,其中完整的堆栈跟踪在一个可切换的文本框中可用。这显然允许在web服务关闭或中断时捕获异常。它还允许用户复制stacktrace,并在他们特别生气时通过电子邮件发送给你

尽管服务器日志记录(例如使用Log4Net)功能更强大,因为它提供了更多的日志记录选项,包括电子邮件警报,但它确实依赖于您能够找到特定人员的异常情况,这在事件日志的情况下需要额外的搜索工具或知识


在我看来,添加可依赖的客户端日志记录(以及服务器日志记录)是一个值得使用的额外功能。

“其中,可切换文本框中提供完整的堆栈跟踪。”选择此选项时要非常小心。如果您说的是受控intranet应用程序中的SL控制,那么您应该不会有问题。但是,如果这是internet上公开的SL控件,则显示堆栈跟踪可能存在安全风险。您不想向客户端提供任何有关可能暴露代码内部工作的异常的详细信息。@Atconway他们可以解压XAP并在reflector中查找:)True,但使用reflector解压.zap文件不会给您带来任何好处“插入MyTableName失败。MyServiceDALMethod.Save(String Val1,StringVal2)中没有这样的参数@UserID“都在一条消息中。另外,如果客户机上有真正的秘密,可以对代码进行模糊处理,以帮助防止使用反编译器。我想一般的共识是“不”“除非您正在测试等,否则向客户端显示完整的堆栈跟踪。@atconway,这种错误将在eventargs.error属性中,不会未处理。我明白你的意思,但我不认为这是一种选择或另一种选择,这取决于你的目标受众的技术水平