不确定这里发生了什么。
我正在通过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);
}
此动作在提琴手或邮递员上什么都没有显示?
有什么想法吗?
public class AppUser : IdentityUser
{
public DateTime Created { get; set; }
}
关于身份用户类有什么特别的东西可以防止其序列化?
这是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");
}
}
找到了我的答案。身份使用者类并不是要在API上暴露的。大量敏感数据和全部。
但是,这将坐在防火墙后面,我不想写DTO和映射器只是为了进行这项工作。
答案在这里解释
基本上,您只需要覆盖要暴露的属性,然后使用datamember属性进行序列化装饰它们。