【发布时间】:2009-12-13 17:58:00
【问题描述】:
我正在尝试找到一种方法来处理服务器端未处理的异常。我想在域服务级别控制异常处理,以便在调用任何操作时,我可以记录异常并将其包装在一些漂亮的词中以将其发送给客户端。 我为 WCF 和经典 Web 服务找到了很多方法,但对于 RIA 服务却一无所获。 请提供您的建议。
【问题讨论】:
标签: .net wcf-ria-services
我正在尝试找到一种方法来处理服务器端未处理的异常。我想在域服务级别控制异常处理,以便在调用任何操作时,我可以记录异常并将其包装在一些漂亮的词中以将其发送给客户端。 我为 WCF 和经典 Web 服务找到了很多方法,但对于 RIA 服务却一无所获。 请提供您的建议。
【问题讨论】:
标签: .net wcf-ria-services
您需要重写此WCF RIA Services Exception Handling 博客条目中描述的DomainService.OnError 方法。我已经在基础 DomainService 类中完成了此操作,而不是在我的应用程序中的每个单独的 DomainService 类中,如下所示。 errorInfo.Error 属性没有设置器,因此我认为您不能将异常对象替换为您自己的,但 <system.web><customErrors mode="On" /> 配置元素可以防止将异常的详细信息暴露给客户。
[EnableClientAccess()]
public class DomainServiceBase : DomainService
{
protected override void OnError(DomainServiceErrorInfo errorInfo)
{
Logger.WriteException(errorInfo.Error);
base.OnError(errorInfo);
}
}
【讨论】:
您可以查找特定的错误,然后抛出与标准 DomainOperationException 不同的 DomainException。 DomainException 中有一个 ErrorCode,可以在客户端上使用它来指定将在客户端上以不同方式处理的条件。
请参阅 Kyle McClellan 在http://forums.silverlight.net/forums/t/193028.aspx 的回复。 对于这类问题,Kyle 的博客也是一个很好的资源。
【讨论】: