首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法在Web API中序列化响应

无法在Web API中序列化响应
EN

Stack Overflow用户
提问于 2012-09-28 21:53:53
回答 15查看 94.6K关注 0票数 86

我正在开发ASP.NET MVC web API,我遇到了这个错误:

'ObjectContent`1‘类型无法序列化内容类型'application/xml;charset=utf-8’的响应正文。

我的控制器是:

代码语言:javascript
复制
public Employee GetEmployees()
{
    Employee employees = db.Employees.First();
    return employees;
}

为什么我会得到这个错误?

EN

回答 15

Stack Overflow用户

发布于 2013-11-28 04:02:46

对我来说,这是一个循环引用的问题。

被接受的答案对我不起作用,因为它只改变了JSON格式化程序的行为,但是当我从浏览器调用服务时,我得到的是XML。

为了解决这个问题,我关闭了XML,只强制返回JSON。

在Global.asax文件中,将以下行放在Application_Start方法的顶部:

代码语言:javascript
复制
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);

现在只返回JSON结果。如果需要XML结果,则需要找到不同的解决方案。

票数 121
EN

Stack Overflow用户

发布于 2012-10-09 13:46:14

在global.asax文件的Application_start()方法中,添加以下行:

代码语言:javascript
复制
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

我希望这对你有帮助!

票数 43
EN

Stack Overflow用户

发布于 2013-03-29 01:15:58

我也有同样的问题。我解决了这个问题。我将默认构造函数放到了DTO类中。

例如:

代码语言:javascript
复制
public class User
{
    public User()
    {
    }
}

希望它能和你一起工作!

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12641386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档