加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 当类型不匹配时,如何使ASP.NET Web API反序列化失败

发布时间:2020-12-15 22:23:10 所属栏目:百科 来源:网络整理
导读:我在ASP.NET Web API(版本5.1.2)中无声地反序列化时遇到问题.我希望反序列化引发错误,但我无法找到它的配置. 我的具体(简化)案例是这样的.客户端应用程序(AngularJS)将HTTP POST请求发送到ASP.NET Web API后端.作为有效载荷,有一堆字符串: ["ABC100","ABC20
我在ASP.NET Web API(版本5.1.2)中无声地反序列化时遇到问题.我希望反序列化引发错误,但我无法找到它的配置.

我的具体(简化)案例是这样的.客户端应用程序(AngularJS)将HTTP POST请求发送到ASP.NET Web API后端.作为有效载荷,有一堆字符串:

["ABC100","ABC200","ABC300"]

但是,服务器需要一个整数列表:

List<int> Ids { get; set; }

最终发生的事情是反序列化失败,Ids列表将为空并且没有错误.

Ids: []

当然也需要修复不匹配,但在我看来POST请求应该在这种情况下失败.如何将其设为默认值?

解决方法

这个问题的一个解决方案似乎是在控制器方法的开头检查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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读