MVC POST Body to Object转换正在吞噬抛出的异常

时间:2016-11-01 14:08:35

标签: c# json asp.net-apicontroller

我正在尝试对我的模型类进行一些基本验证。

在我的项目中,我有一个模型类:

public class SimpleRequest {
    string _message;
    string _otherProperty;

    public Message {
        get {return _message;}
        set {
            if (value=="THROW EXCEPTION")
                throw new Exception();
            _message = value;
        }
    }

    public OtherProperty {
        get {return _otherProperty;}
        set {
            _otherProperty= value;
        }
    }

}

在我的ApiController中,我有一个功能

public string Post([FromBody] SimpleRequest) {
    // Something, it doesn't matter.
}

并在身体

{
    "Message" : "THROW EXCEPTION",
    "OtherProperty" : "Hello World"
}

问题是,如果帖子中包含“THROW EXCEPTION”确实会抛出它。但是如果你单步执行代码,抛出异常后,下一步就是Post函数。但是,SimpleRequest参数已部分填充。消息为空,其他属性已正确填充“Hello World”

我宁愿能够捕获异常并返回带有失败代码的结果。但在这一点上,例外就消失了。

我可以更改此行为吗?或者我做错了吗?

TIA!

1 个答案:

答案 0 :(得分:0)

因为当您抛出异常时,未调用下一行,这就是_message为空的原因。