【发布时间】:2015-01-26 20:49:16
【问题描述】:
我有一个 MVC5 应用程序,其中包含 WebAPI。我测试了它,它适用于简单的字符串和东西。然后我尝试做这样的事情:
public Business Get(string id)
{
return db.Businesses.Where(b => b.Id == id).FirstOrDefault();
}
我得到了上述错误。请注意,Business 是我在模型文件夹中创建的自定义类型。在我的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” 带有数据合同名称 '业务_32C47B90BA261D075748CEC009DA52F8C6D893134F8D33848A7F856F76F50D55:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies' 预计不会。如果您是,请考虑使用 DataContractResolver 使用 DataContractSerializer 或添加任何静态未知的类型 已知类型的列表 - 例如,通过使用 KnownTypeAttribute 属性或通过将它们添加到传递给 serializer.System.Runtime.Serialization.SerializationException
【问题讨论】:
-
异常信息不够。异常的内容是否详细说明了失败的原因?
-
@YuvalItzchakov 我添加了更多文本。
-
如果你通过 WebAPI 发送一些东西,它需要是可序列化的。
-
见this。我认为它应该回答你的问题。
标签: c# asp.net-mvc asp.net-web-api