2014-11-25 2 views
0

Я новичок в ASP.NET. Просто закончил 3 книги в ASP.NET MVC, веб-API и SPA. Но, похоже, этого недостаточно для решения очень простой проблемы. У меня есть следующий код в моем контроллере api для возврата данных JSON/XML. Необходимые данные - это вернуть список пользователей, зарегистрированных в Identity Framework. Сделали это на MVC, но не смогли определить веб-api.ASP.NET 4.5 WebAPI для возврата списка пользователей

[AllowAnonymous] 
    [Route("UserInfos")] 
    public IEnumerable<AppUser> GetUserInfos() 
    { 
     List<AppUser> logins = new List<AppUser>(); 
     foreach (AppUser user in UserManager.Users) 
     { 

      logins.Add(user); 
     } 

     return logins; 

    } 

Но я получаю ошибки, когда я называю этот веб-API. Ошибка, как показано ниже.

<Error> 
<Message>An error has occurred.</Message> 
<ExceptionMessage> 
The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'. 
</ExceptionMessage> 
<ExceptionType>System.InvalidOperationException</ExceptionType> 
<StackTrace/>........ 
.... 
.... 

Я делаю менеджер пользователей/администрации в ООР СОИ требуется веб-интерфейс API, чтобы вернуть список пользователей, ролей и т.д. Так же, как, как MVC возвращает эти данные в модели/регулируемой построить администрацию стр.

помогите пожалуйста. любая ссылка на учебники ценится, так как я исчерпал все, что нужно для ответа на этот вопрос. Благодарю.

[Изменить] Этот код ниже решает его. Я создал модель именно для этой цели. но почему я не могу напрямую обращаться к модели Identity и работать с ней? Я могу сделать это в MVC.

[AllowAnonymous] 
    [Route("UserInfos")] 
    public IEnumerable<FlatUserModel> GetUserInfos() 
    { 
     List<FlatUserModel> logins = new List<FlatUserModel>(); 
     foreach (AppUser user in UserManager.Users) 
     { 
      logins.Add(new FlatUserModel 
      { 
       Id=user.Id, 
       Name=user.UserName, 
       Email=user.Email 

      }); 
     } 

     return logins; 
    } 
+0

'UserManager.Users' имеет тип' 'IQueryable . Вы уверены, что он содержит объекты «AppUser»? –

+0

Сопоставьте пользователей с моделью с плоскими изображениями. Похоже, у вас есть дочерние отношения, которые могут вызывать циклические ссылки при сериализации. – trevorc

+0

Как я могу сопоставить модель с плоским экраном? означает ли я создать модель представления с теми же свойствами, что и AppUser/IdentityUser, и назначить каждый элемент из UserManager.Users на этот новый сложенный объект? –

ответ

0
[AllowAnonymous] 
[Route("UserInfos")] 
public IEnumerable<FlatUserModel> GetUserInfos() 
{ 
    List<FlatUserModel> logins = new List<FlatUserModel>(); 
    foreach (AppUser user in UserManager.Users) 
    { 
     logins.Add(new FlatUserModel 
     { 
      Id=user.Id, 
      Name=user.UserName, 
      Email=user.Email 

     }); 
    } 

    return logins; 
} 
Смежные вопросы