【问题标题】:WCF RIA Services Business Rule /Database Exception HandlingWCF RIA 服务业务规则/数据库异常处理
【发布时间】: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


    【解决方案1】:

    在 RTM 更新中,您将能够在要发送回客户端的 DomainServiceErrorInfo 上设置 Error 属性。此时,您可以将其设置为 DomainException 的实例。

    您可能可以通过从 OnError 中抛出一个新的 DomainException 来获得类似的行为,尽管这将是一个 hacky 解决方法(假设它有效)。

    【讨论】:

    • 这对于近期无法升级到 .Net 4.0 的用户来说是一个失望。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2011-04-22
    • 2012-01-14
    • 1970-01-01
    • 2011-01-29
    • 2012-01-03
    相关资源
    最近更新 更多