MVC POST Body to Object conversion проглатывает выданное исключение

Я пытаюсь выполнить базовую проверку на своих классах моделей.

В моем проекте у меня есть класс модели:

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 заполнен частично. Сообщение null, и OtherProperty правильно заполняется «Hello World»

Я бы предпочел иметь возможность захватить исключение и вернуть результат с кодом сбоя. Но в этот момент исключение просто исчезает.

Могу ли я изменить это поведение? Или я делаю это неправильно?

ТИА!

1 ответ

  1. Потому что при возникновении исключения следующая строка не вызывается и поэтому _message имеет значение null.