ASP.NET 4.5 WebAPI返回用户列表

时间:2014-11-25 01:14:08

标签: asp.net asp.net-mvc asp.net-web-api

我是ASP.NET的新手。刚刚完成了ASP.NET MVC,Web API和SPA的3本书。但似乎还不足以解决一个非常简单的问题。我在我的web api控制器中有以下代码来返回JSON / XML数据。所需数据是返回使用Identity Framework注册的用户列表。在MVC上做了这个,但没能弄清楚web api。

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

            logins.Add(user);
        }

        return logins;

    }

但是当我调用这个Web 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/>........
....
....

我正在SPA中做一个用户经理/管理员,所以我需要web 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;
    }

1 个答案:

答案 0 :(得分: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;
}