Я делаю POST-запрос от моего приложения Angular 7 к внутреннему серверу AspNet Core. Однако, при получении модели, это ноль.
Я тестирую с помощью Postman, и он работает при использовании Postman. Но он не работает при отправке из клиентского приложения.
Вот мой контроллер и база контроллера:
public class BaseController : ControllerBase {
public readonly ILogger _logger;
}
[Route("api/[controller]")]
public class ExperienceController : BaseController {
[HttpPost, Route("Create")]
public async Task<IActionResult> Create([FromBody] Experience experience){
// code ommited
}
}
Вот мой код service.ts
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
// some code omitted
saveExperience(experience: Experience): Observable<Experience> {
let url = `${this.baseUrl}/Experience/Create`;
return this.http.post<Experience>(url, experience, httpOptions).pipe(
tap((newExp: Experience) => this.log(`Created experience ${newExp}`)),
catchError(this.handleError<Experience>('saveExperience'))
);
}

Объект, отправляемый из моего клиентского приложения, использует свойства case-case, а модель для бэкэнда использует pascal-case. В Почтальоне это ни на что не влияет, но на всякий случай.

Я действительно не понимаю, почему при звонке из Почтальона это работает. Но каждый тест от клиента, я получаю нулевой объект.
РЕДАКТИРОВАТЬ # 1
Я удалил все поля из своего класса Experience и использовал только имя и описание, и это сработало, я только что обнаружил, что получаю эту проблему, если у меня есть сложное свойство.
Я добавил конструктор по умолчанию, инициализируя свойство, но все еще получая ту же проблему.
Обратите внимание, что эта проблема возникает только при использовании приложения Angular. Если я использую Postman, оно работает
public class Experience : ExperienceBase {
public string Name { get; set; }
public string Description { get; set; }
// this guy here is causing the issue
public LocationDetails LocationDetails { get; set; }
}
Заранее спасибо