400错误请求不通过自定义异常处理程序

时间:2016-09-02 03:23:08

标签: c# asp.net-web-api exception-handling

这400 Bad Request不会通过我的异常处理程序:

{
  "message": "The request is invalid.",
  "messageDetail": "The parameters dictionary contains a null entry for parameter 'subscriptionId' of non-nullable type 'System.Guid' for method 'System.Net.Http.HttpResponseMessage Get(System.Guid)' in 'Product.Controllers.ItemController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
}

在我的WebApiConfig.cs我有这个:

config.Services.Replace(typeof(IExceptionHandler), new HttpExceptionHandler());

从Action,Repository,Service Layer级别抛出的每个异常都由此异常处理程序处理。但是对于这个错误,通用的WebApi异常处理程序开始了。

我应该如何解决这个问题,以便让这个异常通过我的异常处理程序?

1 个答案:

答案 0 :(得分:0)

我有同样的问题,这是我的解决方案

1-添加过滤器

public class RequestNoValidoAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (!actionContext.ModelState.IsValid)
        {
            var response = new HttpResponseMessage(HttpStatusCode.BadRequest)
            {
                RequestMessage = actionContext.Request,
                Content = new StringContent("Formato no válido.")
            };
            actionContext.Response = response;
        }
    }
}

2-在WebApiConfig.cs

中添加过滤器
config.Filters.Add(new RequestNoValidoAttribute());