我试图以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,书);奇迹般有效。谢谢! –