Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回用户列表的ASP.NET 4.5 WebAPI_Asp.net_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

返回用户列表的ASP.NET 4.5 WebAPI

返回用户列表的ASP.NET 4.5 WebAPI,asp.net,asp.net-mvc,asp.net-web-api,Asp.net,Asp.net Mvc,Asp.net Web Api,我是ASP.NET新手。刚刚完成了ASP.NETMVC、WebAPI和SPA的3本书。但这似乎不足以解决一个非常简单的问题。我的web api控制器中有以下代码,用于返回JSON/XML数据。所需的数据是返回在Identity Framework中注册的用户列表。我们已经在MVC上完成了这项工作,但无法理解web api [AllowAnonymous] [Route("UserInfos")] public IEnumerable<AppUser> GetUserI

我是ASP.NET新手。刚刚完成了ASP.NETMVC、WebAPI和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;

    }
[AllowAnonymous]
[路线(“用户信息”)]
公共IEnumerable GetUserInfos()
{
列表登录名=新列表();
foreach(UserManager.Users中的AppUser用户)
{
添加(用户);
}
返回登录;
}
但是当我调用这个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/>........
....
....

发生了一个错误。
'ObjectContent'1'类型未能序列化内容类型'application/xml'的响应正文;字符集=utf-8'。
System.InvalidOperationException异常
........
....
....
我在SPA中做一个用户经理/管理,soI需要web api来返回用户列表、角色等。就像MVC如何在模型/控制中返回这些数据来构建管理页面一样

请帮忙。任何到教程的链接都是非常感谢的,因为我已经用尽了所有的方法来寻找这个问题的答案。谢谢

[编辑] 下面的代码解决了这个问题。我为此创建了一个模型。但是为什么我不能直接访问和使用身份模型呢?我可以用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;
    }
[AllowAnonymous]
[路线(“用户信息”)]
公共IEnumerable GetUserInfos()
{
列表登录名=新列表();
foreach(UserManager.Users中的AppUser用户)
{
添加(新的FlatUserModel)
{
Id=user.Id,
Name=user.UserName,
Email=user.Email
});
}
返回登录;
}
[AllowAnonymous]
[路线(“用户信息”)]
公共IEnumerable GetUserInfos()
{
列表登录名=新列表();
foreach(UserManager.Users中的AppUser用户)
{
添加(新的FlatUserModel)
{
Id=user.Id,
Name=user.UserName,
Email=user.Email
});
}
返回登录;
}

UserManager。用户的类型为
IQueryable
。是否确实包含
AppUser
对象?将用户映射到展开视图模型。看起来您的子关系在序列化时可能会导致循环引用。如何映射到展开视图模型?这是否意味着我创建了一个与AppUser/IdentityUser具有相同属性的视图模型,并将UserManager.Users中的每个项分配给这个新的扁平化对象?请尝试将这行代码添加到Web API配置文件中,以停止递归引用。var jsonFormatter=config.Formatters.OfType().First();jsonFormatter.SerializerSettings.PreserveReferencesHandling=PreserveReferencesHandling.Objects;
[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;
}