我試圖以Web JSON的形式返回Web Api操作方法中最近添加的實體Id。例如: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}]
那麼,是否可以使用動態(不是Dtos)將標題狀態代碼設置爲201(創建)來返回{bookId:666}?
謝謝您的幫助。
this.Request.CreateResponse(HttpStatusCode.OK,書);奇蹟般有效。謝謝! –