我试图找到一种方法来处理服务器端的未处理异常。我希望控制域服务级别的异常处理,以便在调用任何操作时,我可以记录异常并将其包装成一些漂亮的单词以将其发送到客户端。 我找到了许多WCF和经典Web服务的方法,但没有为RIA服务提供任何方法。 请提供您的建议。
答案 0 :(得分:7)
您需要覆盖此WCF RIA Services Exception Handling 博客条目中所述的 DomainService.OnError 方法。我在一个基本的DomainService类中完成了这个,而不是在我的应用程序中的每个DomainService类中完成,如下所示。 errorInfo.Error 属性没有setter,所以我认为你不能用你自己的替换异常对象,但是<system.web><customErrors mode="On" />
config元素可以防止异常的细节暴露给客户。
[EnableClientAccess()]
public class DomainServiceBase : DomainService
{
protected override void OnError(DomainServiceErrorInfo errorInfo)
{
Logger.WriteException(errorInfo.Error);
base.OnError(errorInfo);
}
}
答案 1 :(得分:2)
您可以查找特定的错误,然后抛出一个DomainException,它与标准的DomainOperationException不同。 DomainException中有一个ErrorCode,可以在客户端上使用它来指定在客户端上以不同方式处理的条件。
见凯尔麦克莱伦在http://forums.silverlight.net/forums/t/193028.aspx的回应。 Kyle的博客也是这类问题的非常好的资源。