ASP.NET WebApi更改默认参数绑定错误消息

ASP.NET WebApi更改默认参数绑定错误消息,.net,asp.net-mvc,asp.net-web-api,.net,Asp.net Mvc,Asp.net Web Api,我将动作方法定义为 public HttpResponseMessage Get(SomeEnum? param) { ... } 如果我为param传递了一些无效值,而该值不能转换为某个枚举类型,则会收到以下消息: The value 'xxx' is not valid for Nullable`1. 这是我可以从ModelState获得的默认消息。我想自定义此邮件。我在ASP.NET MVC(如)中找到了很多技巧,但在WebAPI中却没有找到。更改DefaultModelBind

我将动作方法定义为

public HttpResponseMessage Get(SomeEnum? param)
{
   ...
}
如果我为param传递了一些无效值,而该值不能转换为某个枚举类型,则会收到以下消息:

The value 'xxx' is not valid for Nullable`1.
这是我可以从ModelState获得的默认消息。我想自定义此邮件。我在ASP.NET MVC(如)中找到了很多技巧,但在WebAPI中却没有找到。更改DefaultModelBinder.ResourceClassKey在WebAPI中不起作用。我还尝试通过自定义ParameterBindingRule来解决这个问题:

config.ParameterBindingRules.Insert(0, parameter =>
{
   if (!typeof (EnumType?).IsAssignableFrom(parameter.ParameterType))
      return parameter.BindAsError("Error message");

    return null;
});
不幸的是,这也不起作用。

以下是解决方案:

// in Application_Start 
ModelBinderConfig.TypeConversionErrorMessageProvider = (context, metadata, value) =>
{
    ...
}

您可以创建一个自定义异常过滤器来实现您的目标。@AnkushJain我已经定义了全局异常过滤器,但在这种情况下无法访问它。我想我必须创建某种自定义活页夹或验证器。它会工作的。可能是您没有遵循适当的规则来实施它。请仔细阅读