Я пытаюсь вернуть недавно добавленный идентификатор объекта в метод действия Web Api как JSON. Пример:Web Api - Как вернуть динамический объект с кодом состояния 201
{ bookId = 666 }
код
Контроллер Действия выглядит следующим образом:
[HttpPost, Route("")]
public HttpResponseMessage Add(dynamic inputs)
{
int bookId = bookService.Add(userId, title);
dynamic book = new ExpandoObject();
book.bookId = bookId
return new HttpResponseMessage(HttpStatusCode.Created)
{
Content = new ObjectContent<dynamic>(book,
new JsonMediaTypeFormatter
{
UseDataContractJsonSerializer = true
})
};
}
Проблема здесь, чтобы выполнить его возвращение динамического контента (без DTO) и возвращение HttpStatusCode.Created (201 статуса HTTP) ,
Теперь у меня есть следующая ошибка:
{"Message":"An error has occurred.","ExceptionMessage":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.","ExceptionType":"System.InvalidOperationException","StackTrace":null,"InnerException":{"Message":"An error has occurred.","ExceptionMessage":"No se espera el tipo 'System.Dynamic.ExpandoObject' ...
, если я изменю new ObjectContent<dynamic>
по new ObjectContent<ExpandoObject>
я получаю правильный 201 статус заголовка ответа, но результат JSON как выглядит следующим образом:
[{"Key":"bookId","Value":666}]
Итак, можно ли возвратить {bookId: 666} с помощью динамики (не Dtos), установив код состояния заголовка на 201 (создан)?
Благодарим за помощь.
this.Request.CreateResponse (HttpStatusCode.OK, книги); работает как шарм. Спасибо! –