Silverlight中异常处理的最佳实践是什么?

时间:2009-02-23 19:32:17

标签: silverlight exception-handling

在ASP.NET中,我通常在服务器端记录异常,在Windows窗体中,我可以记录服务器端的异常或写入客户端上的日志文件。 Silverlight似乎适合介于两者之间。

我想知道其他人正在做些什么来处理他们的Silverlight异常,我很好奇是否已经出现了这方面的最佳实践。

5 个答案:

答案 0 :(得分:5)

对于您可以存储的真实日志记录&跟踪,您将需要在服务器上执行此操作,因为无法保证客户端上的任何内容都会被保留。

我建议在服务器端Web服务上公开一个“LogEvent(..)”方法(也许你已经有了),然后在ASP.net中执行相同类型的日志记录

如果您还没有这样做,那么这是一个关于Silverlight中基本Web服务调用的视频 http://silverlight.net/learn/learnvideo.aspx?video=66723

我不确定任何日志记录最佳做法,我的第一个猜测是在服务器上登录Web服务并将其公开给客户端做最好的实践。

希望这有帮助!

答案 1 :(得分:4)

我想说Silverlight更适合模型的ASP.NET端。你有服务器提供网页。页面上的一个对象(Silverlight应用程序)ping数据服务以获取数据并显示它。

所有数据访问都发生在服务器端,如果数据用于在服务器上创建ASP.NET页面或者将原始数据发送到RIA进行显示,则无关紧要。我在服务器端记录数据服务中的任何失败(事件日志工作正常),并且不允许任何异常传递给WCF。当客户端没有收到预期的数据(它获得空集合或类似的东西)时,它会向用户显示通用数据访问错误。我们可能需要尽快扩展它以传递更多信息(区分访问被拒绝/丢失数据库/基础设施故障/内部错误/等),但我们不打算将异常错误消息传递给客户端。

至于客户端,有时我们可能会遇到异步呼叫超时的情况 - 这只是另一条消息。对于客户端代码的一般异常(通常是代码中的错误),我只是将异常传递给浏览器,以与任何脚本异常相同的方式显示。

答案 2 :(得分:4)

使用Isolated Storage available for Silverlight application。你应该在这里存储你的日志。

然后,您可以开发一种机制来将用户日志发送到Windows错误报告服务等Web服务。

答案 3 :(得分:4)

另请查看Silverlight Integration Pack for Enterprise Library中的新Microsoft patterns & practices。它支持将异常记录到隔离存储或远程服务,并可通过外部配置中的策略或以编程方式进行配置。还支持批量记录和自动重试(在偶尔连接的情况下)。

答案 4 :(得分:0)

这在很大程度上取决于您正在开发的应用程序类型。

如果它是一个基于mvc / mvp的架构,那么你的模型,或者至少大部分它将在服务器上,这就是你想象的大部分异常将被抛出的地方,所以你可以在那里记录它们选择是否向用户显示消息。

对于来自客户的例外,您可能想要了解详细信息,以便将其发回。