2
我想要一種方法來攔截當發送格式錯誤的json到webapi端點時發生的異常,以便我可以返回語義錯誤代碼而不僅僅是500。 「修復你的破JSON或下地獄」)攔截webapi json格式錯誤
我想要一種方法來攔截當發送格式錯誤的json到webapi端點時發生的異常,以便我可以返回語義錯誤代碼而不僅僅是500。 「修復你的破JSON或下地獄」)攔截webapi json格式錯誤
您可以通過從ActionFilterAttribute
派生創建自定義的驗證篩選器屬性:
public class ValidationFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
actionContext.Response = actionContext
.Request
.CreateErrorResponse(HttpStatusCode.BadRequest,
actionContext.ModelState);
}
}
}
現在,你既可以用它裝點你的行動:
[HttpGet]
[ValidationFilter()]
public string DoSomethingCool()
或通過全球註冊它的config
:
config.Filters.Add(new ValidationFilterAttribute());
這可以在全球範圍內,而不必裝飾與validationfilter屬性的任何方法呢? – user20358 2015-04-20 10:44:38
@ user20358是的。只需在'Global.asax.cs'中註冊過濾器:'GlobalConfiguration.Configuration.Filters.Add(new ValidationFilterAttribute());' – 2015-04-20 11:00:04
謝謝。我應該使用ExceptionFilterAttribute還是ExceptionHandler或MessageHandler。哪一個更好? – user20358 2015-04-20 15:10:09