不确定这里发生了什么。
我通过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");
}
}
答案 0 :(得分:0)
找到我的答案。 IdentityUser类实际上不是通过API公开的;很多敏感数据和所有。
然而,这将位于防火墙后面,我不想写DTO和映射器只是为了使其工作。
答案解释为here
基本上,您只需覆盖要暴露的属性,并使用DataMember属性对其进行装饰以进行序列化。