RIA服务服务器端异常处理

问题描述:

我想找出一种方法来处理未处理的异常在服务器端。我想控制域服务级别的异常处理,以便在任何操作被调用时,我可以记录异常并用一些漂亮的单词包装它以将其发送给客户端。 我发现WCF和经典Web服务的许多方法,但没有任何RIA服务。 请提供您的建议。RIA服务服务器端异常处理

您需要覆盖此WCF RIA Services Exception Handling博客条目中所述的DomainService.OnError方法。我已经在一个基本的DomainService类中完成了这项工作,而不是在我的应用程序中的每个单独的DomainService类中,如下所示。 errorInfo.Error属性没有setter,所以我不认为你可以用你自己的替换异常对象,但配置元素<system.web><customErrors mode="On" />可以防止异常的细节暴露给客户端。

[EnableClientAccess()] 
public class DomainServiceBase : DomainService 
{ 
    protected override void OnError(DomainServiceErrorInfo errorInfo) 
    { 
     Logger.WriteException(errorInfo.Error); 
     base.OnError(errorInfo); 
    } 
} 

您可以查找特定的错误,然后抛出一个DomainException,它与标准的DomainOperationException不同。 DomainException中有一个ErrorCode,可以在客户端使用它来指定在客户端上将以不同方式处理的条件。

查看Kyle McClellan的回复http://forums.silverlight.net/forums/t/193028.aspx。 凯尔的博客对于这些类型的问题也是一个很好的资源。