繁体   English   中英

Web API Json序列化异常和动态实体

[英]Web API Json Serialization Exception & Dynamic Entities

我有一个Web API控制器方法,该方法返回一个对象,该对象为客户端提供了500个内部服务器错误。 在服务器上,输出窗口显示“ Newtonsoft.Json.JsonSerializationException”。 但是我返回的班级没有任何问题..而且我确信这在历史上一直有效。 任何帮助将不胜感激!

编辑:这是Web API无法序列化“动态实体”的问题吗? 生成类的代码在这里:

        var id = User.Identity.GetUserId();

        var user = db.Users
                    .Where(u => u.Id == id)
                    .Include(u => u.Friends)
                    .FirstOrDefault();

        return user;

我正在返回下一堂课;

   public class User : IdentityUser
{
    public User()
    {
        this.Friends = new List<UserFriend>();
    }

    public string PhoneNumber { get; set; }
    public string Email { get; set; }
    public List<UserFriend> Friends { get; set; }
    public bool HasRegistered { get; set; }
    public string LoginProvider { get; set; }
}

“ UserFriend”类如下所示;

    public class UserFriend
{
    public int UserFriendId { get; set; }
    public string Id { get; set; }
    public string FriendUserId { get; set; }
    public string FriendUserName { get; set; }
    public string FriendPhoneNumber { get; set; }

}

奇怪的是,当我将鼠标悬停在服务器上返回的对象上时,类型为:{System.Data.Entity.DynamicProxies.User_7283E76A736B4DD47E89120E932CD5C04B62F84C316961F02CDAE3EEF4786504}。 我不确定这是什么..:-O

我使用AutoMapper来创建DTO,而不仅仅是返回User类。 之所以要使用DynamicProxies类,是因为查询使用了延迟加载,并且还没有获取对象。

安装自动映射器之后(Install-Package AutoMapper);

        Mapper.CreateMap<User, UserDto>();
        UserDto dto = Mapper.DynamicMap<UserDto>(user);

然后返回dto。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM