IdentityUser没有序列化Web Api

时间:2016-11-28 22:01:26

标签: serialization asp.net-web-api asp.net-identity

不确定这里发生了什么。

我通过Web API项目公开了Identity功能。 CRUD方面将暴露给管理员应用程序和登录,在面向公众的应用程序中注册。

现在我只想通过Web Api控制器操作返回数据库中所有用户的列表。我没有得到任何输出到响应,但我确实从服务中获取数据:

        /// <summary>
    /// 
    /// </summary>
    /// <returns></returns>
    [HttpGet]
    [Route("")]
    public async Task<IHttpActionResult> GetAllUsers()
    {
        var model = await _userService.GetAllUsers(); //<---Gets List<AppUser> here?
        return Ok(model);
    }

此操作在提琴手或邮差上没有显示任何内容?

有什么想法吗?

   public class AppUser : IdentityUser
   {
        public DateTime Created { get; set; }
   }

IdentityUser类有什么特别之处可以阻止它被序列化吗?

这是web api序列化配置:

config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
        config.Formatters.Add(new JsonFormatter());


    }

    public class JsonFormatter : JsonMediaTypeFormatter
    {
        public JsonFormatter()
        {
            this.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
            this.SerializerSettings.Formatting = Formatting.Indented;
        }

        public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType)
        {
            base.SetDefaultContentHeaders(type, headers, mediaType);
            headers.ContentType = new MediaTypeHeaderValue("application/json");
        }
    }

1 个答案:

答案 0 :(得分:0)

找到我的答案。 IdentityUser类实际上不是通过API公开的;很多敏感数据和所有。

然而,这将位于防火墙后面,我不想写DTO和映射器只是为了使其工作。

答案解释为here

基本上,您只需覆盖要暴露的属性,并使用DataMember属性对其进行装饰以进行序列化。