如何抓取或拦截ODataException来返回自定义的错误有效载荷?

问题描述 投票:0回答:1

我正在重构一个使用Odata的ASP.NET WEB API解决方案。当处理错误时,我想提供一个自定义的错误有效载荷,它定义在我的CustomException类中。

问题是,当我发出一个坏的请求时,生成的响应是ODataException错误有效载荷,其中包含一些我不希望暴露的机密信息,还有堆栈跟踪。

我需要修改这个Odata payload,并用我自己的Odata payload替换。

到目前为止,我已经尝试过在Controller级别上使用Exception Filters,也尝试过在全局级别上注册一个Exception Handler。这些都没有成功。

如果有任何帮助,我将非常感激。

asp.net exception asp.net-web-api error-handling odata
1个回答
0
投票

我可以用Exception Filter来解决,我之前使用了错误的方法。

public class CustomExceptionFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {    
        ErrorContentResponse error = new ErrorContentResponse();

        var response = new HttpResponseMessage(actionExecutedContext.Response.StatusCode)
        {
            Content = new ObjectContent<ErrorContentResponse>(error, new JsonMediaTypeFormatter())
        };

        actionExecutedContext.Response = response;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.