Я пытаюсь отправить объект с помощью запроса POST
на свой ASP. NET Core 3.1 API, но продолжаю получать ошибку Bad Request
. Насколько я понимаю, у меня есть класс, который соответствует тому, что я ожидаю идеально , но, очевидно, это не так. Как я могу точно определить, в чем проблема?
Ошибка:
public async Task<IActionResult> Post([FromBody] MyCustomObject input)
{
// Do something here...
}
Если я использую dynamic
, все работает нормально. Итак, следующий код работает нормально:
public async Task<IActionResult> Post([FromBody] dynamic input)
{
// Do something here...
}
Как я уже сказал, я получаю сообщение об ошибке 400
, Bad Request
. Я перебирал MyCustomObject
снова и снова, и он выглядит идентичным объекту, который я отправляю.
Вот как выглядит мой настраиваемый класс:
public class CreateContactVm
{
[GuidEmptyNotAllowed]
public Guid AccountId { get; set; }
[Required]
public string AccountName { get; set; }
[GuidEmptyNotAllowed]
public Guid ContactGroupId { get; set; }
[IntZeroNotAllowed]
public int ContactType { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string EntityName { get; set; }
public List<AddEmailVm> Emails { get; set; } = new List<AddEmailVm>();
public List<AddPhoneNumberVm> PhoneNumbers { get; set; } = new List<AddPhoneNumberVm>();
public List<AddAddressVm> Locations { get; set; } = new List<AddAddressVm>();
}
Здесь я использую некоторые пользовательские проверки, такие как [GuidEmptyNotAllowed]
или [IntZeroNotAllowed]
. Я проверяю объект, который я отправляю с помощью моего вызова POST
, и он удовлетворяет ВСЕМ требованиям, но все равно не работает.
Как я могу получить дополнительную информацию о том, почему мой метод API выдает ошибку 400
?
ОБНОВЛЕНИЕ:
Следующий код позволяет мне преобразовать то, что входит как dynamic
, в мой CreateContactVm
пользовательский класс, но мне вообще не нужно этого делать:
CreateContactVm request = new CreateContactVm();
try
{
var element = (JsonElement)input; // input is the dynamic received
request = JsonUtils.Deserialize<CreateContactVm>(element.GetRawText());
}
catch(Exception e)
{
var error = e.Message;
}
Это также доказывает, что проблема связана с привязкой модели. Что-то в моем пользовательском классе не нравится объект JSON
, который он получает.