【发布时间】:2009-12-28 20:24:11
【问题描述】:
我正在使用 WCF RIA Services VS2008/.NET 3.5 并尝试进行异常处理。我已经覆盖了 DomainService 的 OnError 方法并在该方法中进行异常处理。我试图以某种形式向客户端抛出业务规则异常或数据库异常,以便客户端识别它们并以不同方式处理它们。 问题是客户端总是收到 DomainServiceException 并且第一行显示操作名称失败的原始错误消息。因此,我无法在客户端识别异常类型。我尝试在 OnError 中为某些类型的异常添加一个特殊字符串,如下所示
/// <summary>
/// Exception handling and logging on error
/// </summary>
/// <param name="errorInfo"></param>
protected override void OnError(DomainServiceErrorInfo errorInfo)
{
Exception exceptionToLog = null;
//if exception is business rule exception then log only if there's an inner exception
if (errorInfo.Error.GetType() == typeof(BusinessRuleException))
{
if (errorInfo.Error.InnerException != null)
{
exceptionToLog = errorInfo.Error;
}
//send the business rule exception to client
base.OnError(new DomainServiceErrorInfo(new DomainException("BRE:" + errorInfo.Error.Message)));
}
else
{
exceptionToLog = errorInfo.Error;
//if its some other server error then send only generic message.
base.OnError(new DomainServiceErrorInfo(new DomainException(ValidationErrorResources.MSG_GenericServerError)));
}
if (exceptionToLog != null)
{
//log exception
EntLibHelper.LogError(exceptionToLog);
}
}
但是这个技巧似乎不起作用。 有什么方法可以附加一些额外的信息,我从服务器抛出的异常到客户端。 请提出建议。
【问题讨论】:
标签: silverlight silverlight-3.0 exception-handling wcf-ria-services