2
當Json反序列化失敗時,嘗試返回正確的錯誤消息而不是WebAPI默認的錯誤消息{"Message":"The request is invalid.","ModelState"
。當JSON負載無效時,自定義ActionFilterAttribute不會被調用
我實現我的自定義ActionFilterAttribute:
internal class ValidateModelAttribute : ActionFilterAttribute {
public override void OnActionExecuting(HttpActionContext actionContext) {
if (!actionContext.ModelState.IsValid) {
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
}
}
}
}
我飾我的控制器方法與此屬性:
[ValidateModelAttribute]
public async Task<HttpResponseMessage> Put(string username, string serviceId, [FromBody] Dictionary<string, string> jsonData)
{
// code
}
如果我在OnActionExecuting
設置斷點只休息時jsonData
作爲json被成功解析。如果json無效,它永遠不會進入過濾器,並返回相同的錯誤消息。所以看起來這是在之前的某個地方完成的,但是我發現的所有帖子都說這應該是處理這個問題的地方。
任何想法有什麼不對?