从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); } } }
- Web Api 2会话
- C#unit testingAPI 2调用
- Web API Controller将MemoryStream转换为StreamContent
- 在Web API控制器中构建JSON响应
- 使用Directory.Delete()和Directory.CreateDirectory()覆盖文件夹
- 如何正确unit testingOData v6.0控制器?
- 包含属性但排除该属性的属性之一
- Web Api 2 – 如何从HTTPGET返回映像(来自Azure存储的MemoryStream)而不保存到磁盘?
- 返回HttpResponseMessage并配置Application Insights时,WebAPI响应永远不会完成