' ObjectContent`1'类型无法序列化WebAPI中内容类型的响应正文

时间:2015-01-26 12:31:24

标签: c# asp.net-mvc asp.net-web-api

我有一个MVC5应用程序,我在其中包含了WebAPI。我测试了它,它适用于简单的字符串和东西。然后我尝试做这样的事情:

public Business Get(string id)
{
     return db.Businesses.Where(b => b.Id == id).FirstOrDefault();
}

我得到了上面提到的错误。请注意,Business是我在models文件夹中创建的自定义类型。在我的WebApiConfig文件中,我有类似的内容:

var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
formatter.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
formatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

知道如何解决问题吗?

修改

更多错误消息:

  

  键入' System.Data.Entity.DynamicProxies.Business_32C47B90BA261D075748CEC009DA52F8C6D893134F8D33848A7F856F76F50D55'   与数据合同名称   ' Business_32C47B90BA261D075748CEC009DA52F8C6D893134F8D33848A7F856F76F50D55:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies'   不是预期的。如果是的话,请考虑使用DataContractResolver   使用DataContractSerializer或添加静态未知的任何类型   已知类型的列表 - 例如,通过使用KnownTypeAttribute   属性或将它们添加到传递给的已知类型列表中   serializer.System.Runtime.Serialization.SerializationException

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。我只需要包含这行代码:

DbContext.Configuration.ProxyCreationEnabled = false;