在ApiController中返回BsonDocument

Fre*_*kNS 9 c# asp.net-mvc mongodb mongodb-.net-driver

我正在使用ASP.NET MVC 4中的API,我使用MongoDB作为后端.

由于MongoDB存储和返回BSON对象,以及MVC4返回JSON对象,我认为在其余调用上简单地返回BSON会相当容易.

这不起作用,所以我.toJson()BsonDocument类上找到了方法,将BSON对象转换为JSON字符串表示.不幸的是,当我通过my返回此字符串时ApiController,MVC显然认为它应该将字符串重新序列化为JSON,浏览器无法解释.

所以我想问一下是否有办法禁用特定ApiController方法的JSON序列化?

我目前的解决方法是在返回.toJson()之前对从返回的JSON 进行反序列化,使其再次序列化,但这似乎相当浪费.

Cra*_*son 1

假设您有一个与您的应用程序和 api 控制器尝试返回的资源关联的架构。通过强制它使用 json,您完全回避了内容协商,从而忽略了 WebApi 的许多好处。如果您的客户想要 xml 或 yaml 或......怎么办?

您遇到的问题是 WebApi 不知道如何序列化 BsonDocument。因此,您可以为它编写一个 ModelBinder,以便它知道如何处理它。或者,暗指我的第一段,创建强类型实体/资源类,并且由于 MongoDB 和 WebApi 都已经了解这些类型,因此它们将能够在本机使用它们。