我在ASP.NET Web API(版本5.1.2)中无声地反序列化时遇到问题.我希望反序列化引发错误,但我无法找到它的配置.
我的具体(简化)案例是这样的.客户端应用程序(AngularJS)将HTTP POST请求发送到ASP.NET Web API后端.作为有效载荷,有一堆字符串:
["ABC100","ABC200","ABC300"]
但是,服务器需要一个整数列表:
List<int> Ids { get; set; }
最终发生的事情是反序列化失败,Ids列表将为空并且没有错误.
Ids: []
解决方法
这个问题的一个解决方案似乎是在控制器方法的开头检查ModelState.IsValid属性:
[HttpPost] [Route("Stuff/Ids/")] public void PostStuff(List<int> Ids) { if(!ModelState.IsValid) throw new Exception("ModelState is not valid."); // Carry on... }
在我的问题描述的情况下,ModelState.IsValid确实是假的.
通过创建一个动作过滤器,可以使检查成为全局检查.有关此的说明,请参阅本文:Model Validation in ASP.NET Web API
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。