Web API如何无法反序列化JSON.Net反序列化的对象?

这是Web API控制器:
public void Put(EditorSubmissionMainView ajaxSubmission) {
// ajaxSubmission: EditorSubmissionMainView with all values ('data' also == null)
string json = "{\"id\":\"row_1377\",\"data\":{\"ROTATION\":\"1\",\"EQUIPMENT\":[{\"id\":\"6\"},{\"id\":\"8\"}],\"NOTES\":\"\"}}";
EditorSubmissionMainView foo = Newtonsoft.Json.JsonConvert.DeserializeObject<EditorSubmissionMainView>(json) as EditorSubmissionMainView;
// foo is a EditorSubmissionMainView but properly deserialized.
}
Run Code Online (Sandbox Code Playgroud)
这是由Fiddler捕获并格式化的JSON:
{
"id": "row_1377",
"data": {
"ROTATION": "1",
"EQUIPMENT": [{
"id": "6"
},
{
"id": "8"
}],
"NOTES": ""
}
}
Run Code Online (Sandbox Code Playgroud)
使用JSON.Net但不使用Web API控制器进行序列化的示例类:
[Serializable]
public class EditorSubmissionMainView
{
public string id { get; set; }
public EditorSubmissionMainViewData data { get; set; } …Run Code Online (Sandbox Code Playgroud) 我正在开发一个ASP.NET WebApi(Release Candidate)项目,我正在使用标有[Serializable]属性的几个DTO.这些DTO超出了我的控制范围,所以我无法以任何方式修改它们.当我从get方法返回任何这些时,生成的JSON包含一堆k__BackingFields,如下所示:
<Name>k__BackingField=Bobby
<DateCreated>k__BackingField=2012-06-19T12:35:18.6762652-05:00
Run Code Online (Sandbox Code Playgroud)
基于我已经完成的搜索,这似乎是JSON.NET的IgnoreSerializableAttribute 设置的问题,并且为了解决我的问题,我只需要像文章建议的那样全局设置它.如何在ASP.NET Web api项目中全局更改此设置?