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。 凯尔的博客对于这些类型的问题也是一个很好的资源。