Web API转换为Azure Mobile Service而不是序列化所有属性

我有一个工作的Web API,我正在转换为.Net Azure移动服务。 API返回一个复杂的模型 – 具有属性的对象 – 其中一些是其他对象的集合。 这与普通的Web API一样正常,但是使用Azure移动服务我遇到了一个问题,即我的某个模型没有序列化它的所有属性。

当我在控制器中的return语句上设置断点时,我看到所有属性及其值都存在。 这让我相信问题在于序列化(JSON)。

return Request.CreateResponse(HttpStatusCode.OK, myModel); 

正在序列化的属性示例:

 public Guid Id { get; set; } public IEntityDto ModelDto { get; set; } //this is an object with many properties all of which serialize 

未序列化的属性示例:

 public ItemStatus Status { get; set; } //this is an enum public string Message { get; set; } public string TestProp { get; set; } //this is a simple string property I added to help debug 

我怎样才能进一步调试这个,以便我可以看到为什么要排除这些属性?

注意:目前我仍在本地运行,而不是在Azure上运行。 这是使用Visual Studio 2013 Update 2 RTM。

更新 :仔细检查后,似乎未序列化的属性是枚举或值为null的属性。

正如@carlosfigueira在对原始问题的评论中提到的,JSON序列化程序的默认行为是排除具有null和默认值的属性。 为了解决这个问题,我更改了以下设置:

  httpConfig.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include; httpConfig.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include; 

…其中httpConfig的类型为HttpConfiguration 。 您可以在应用程序启动时进行这些更改 – 在WebApiConfig.cs等配置文件中或直接在Global.asax.cs中进行。