【问题标题】:IdentityUser not serializing Web ApiIdentityUser 未序列化 Web Api
【发布时间】:2016-11-28 22:01:25
【问题描述】:

不确定这里发生了什么。

我正在通过 Web API 项目公开身份功能。 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);
    }

这个动作在 fiddler 或 Postman 上什么都没有显示?

有什么想法吗?

   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");
        }
    }

【问题讨论】:

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


    【解决方案1】:

    找到我的答案。 IdentityUser 类并不是真的要通过 API 公开。大量敏感数据等等。

    但是,这将位于防火墙后面,我不想编写 DTO 和映射器来完成这项工作。

    答案解释here

    基本上,您只需要覆盖您想要公开的属性并使用 DataMember 属性装饰它们以进行序列化。

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 2020-12-07
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 2012-08-29
      • 2012-02-19
      相关资源
      最近更新 更多