从Web Api请求获取自定义validation错误消息到HttpClient

我的ASP.NET Web Api 2服务有以下模型:

public class Message { public int Id { get; set; } [Required] [StringLength(10, ErrorMessage = "Message is too long; 10 characters max.")] public string Text { get; set; } } 

我正在从我的WinForms应用程序发出请求:

 using (var client = new HttpClient()) { client.BaseAddress = new Uri(BaseAddress); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var messageOverTenCharacters = new Message { Text = "OverTenCharacters" } var response = await client.PostAsJsonAsync("api/messenger/PushMessage", messageOverTenCharacters); // How do I see my custom error message that I wrote in my model class? } 

如何查看我在模型类中编写的自定义错误消息?

这是我在我的注册到web api配置的validation类的实现:

 public class ValidateModelAttribute : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext) { if (actionContext.ModelState.IsValid == false) { actionContext.Response = actionContext.Request.CreateErrorResponse( HttpStatusCode.BadRequest, actionContext.ModelState); } } } 

我想通了,我需要在validation类中设置Response.ReasonPhrase ,以便客户端可以看到它(而不仅仅是“BadRequest”):

 public class ValidateModelAttribute : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext) { if (actionContext.ModelState.IsValid == false) { var errors = actionContext.ModelState .Values .SelectMany(m => m.Errors .Select(e => e.ErrorMessage)); actionContext.Response = actionContext.Request.CreateErrorResponse( HttpStatusCode.BadRequest, actionContext.ModelState); actionContext.Response.ReasonPhrase = string.Join("\n", errors); } } }