我正在重构一个使用Odata的ASP.NET WEB API解决方案。当处理错误时,我想提供一个自定义的错误有效载荷,它定义在我的CustomException类中。
问题是,当我发出一个坏的请求时,生成的响应是ODataException错误有效载荷,其中包含一些我不希望暴露的机密信息,还有堆栈跟踪。
我需要修改这个Odata payload,并用我自己的Odata payload替换。
到目前为止,我已经尝试过在Controller级别上使用Exception Filters,也尝试过在全局级别上注册一个Exception Handler。这些都没有成功。
如果有任何帮助,我将非常感激。
我可以用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;
}
}