C# Exceptioncontext 的异常转换为自定义异常给出 null

C# Exceptioncontext's exception converting to custom exception gives null

尝试将 context.Exception 转换为 DomainException 时,我总是得到 null

public class DomainExceptionFilter : IExceptionFilter
{
    public void OnException(ExceptionContext context)
    {
        DomainException domainException = context.Exception as DomainException; // context.Exception is not null whereas
        if (domainException != null) // always null
        {
            string json = JsonConvert.SerializeObject(domainException.Message);

            context.Result = new BadRequestObjectResult(json);
            context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
        }
    }
}

这是我的自定义异常class看起来像

public class DomainException : Exception
{
    internal DomainException(string businessMessage)
        : base(businessMessage)
    {
    }
}

我尝试在 DomainException class 中添加一个新的结构来获取异常参数,如下所示。

public class DomainException : Exception
{
    internal DomainException(string businessMessage)
        : base(businessMessage)
    {
    }
    public DomainException(Exception ex) : base(ex.Message)
    {

    }
}

没有错误,但在转换为我的 customexception(domainException) 时出现空值?

而不是直接通过 'as' 转换它,您需要显式转换它,因为您的类型 DomainException 与 context.Exception.

不匹配

所以,你可以像下面这样转换它:

DomainException dex = new  DomainException(context.Exception.Message);

此外,您可以在任何需要的地方使用 'dex'。