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

12
在ASP.NET中,我通常在服务器端记录异常,在Windows窗体应用程序中,我可以将异常记录到服务器端或写入客户端的日志文件。Silverlight似乎处于两者之间。
我想知道其他人是如何处理他们的Silverlight异常的,并且我很好奇是否已经出现了任何最佳实践。
5个回答

5
为了进行实时的日志记录并能够存储和追踪,您需要在服务器上进行操作,因为无法保证客户端上的任何内容都会被保存下来。我建议在服务器端的Web服务中公开一个“LogEvent(..)”方法(也许您已经有了一个),该方法将执行与ASP.net中相同类型的日志记录。如果您还没有这样做过,以下是有关在Silverlight中进行基本Web服务调用的视频:http://silverlight.net/learn/learnvideo.aspx?video=66723。不过,我不确定是否有任何最佳的日志记录实践,我的第一次猜测是在服务器上执行Web服务的最佳实践,并将其暴露给客户端。希望这可以帮助到您!

4

最终版本上周发布。所有组件都可以通过 NuGet 获得。这是公告链接:http://bit.ly/jDscwl - Grigori Melnik
此外,请查看最近的Channel9 screencast,演示了如何使用异常处理应用程序块来处理Silverlight:https://channel9.msdn.com/posts/Enterprise-Library-for-Silverlight-Exception-handling-demo - Grigori Melnik

4
我认为Silverlight更适合于ASP.NET模型。您有一个提供网页的服务器。网页上的对象(Silverlight应用程序)会请求数据服务以获取数据并将其显示出来。
所有的数据访问都发生在服务器端,无论数据是用于创建服务器端的ASP.NET页面还是直接发送到RIA进行显示。我会记录服务器端数据服务中的任何故障(事件日志很好用),并且不允许任何异常通过WCF传递。当客户端未收到预期的数据时(它得到了空集合或类似的东西),它会向用户显示通用的数据访问错误。我们可能需要很快扩展它以传递更多信息(区分访问被拒绝/缺少数据库/基础设施故障/内部错误等),但我们不打算将异常错误消息传递给客户端。
至于客户端,有时我们可能会遇到异步调用超时的情况 - 这只是另一条消息。对于客户端代码中的一般异常(通常是我们代码中的错误),我只是将异常传递给浏览器以同样的方式显示,就像任何脚本异常一样。

4

0

这非常取决于您正在开发的应用程序类型。

如果它是基于MVC / MVP架构的,则您的模型,或至少大部分模型,将在服务器上,这也是您想象中大多数异常抛出的地方,因此您可以在那里记录它们并选择向用户显示消息或不显示。

对于来自客户端的异常,您可能希望了解详细信息,因此只需将其发送回即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接