2016-11-28 2 views
0

Не уверен, что здесь происходит.IdentityUser не сериализует Web Api

Я раскрываю функциональность Identity через проект веб-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; } 
    } 

Есть ли что-то особенное в классе 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

Найдено мой ответ. Класс IdentityUser на самом деле не предназначен для просмотра через API; множество конфиденциальных данных и все.

Однако это будет сидеть за брандмауэром, и я не хочу писать DTO и картографию, чтобы сделать эту работу.

Ответ объясняется here

В основном вам просто нужно переопределить свойства, которые вы хотите, открытые и украсить их с атрибутом DataMember для сериализации.