C# 我已经添加了一个用户并将其分配给一个角色,当我使用Membership.GetAllUsers()时,它将返回none

C# 我已经添加了一个用户并将其分配给一个角色,当我使用Membership.GetAllUsers()时,它将返回none,c#,asp.net,member,asp.net-mvc-5,sqlmembershipprovider,C#,Asp.net,Member,Asp.net Mvc 5,Sqlmembershipprovider,旁注:我使用的是vs2013 express,没有安装其他任何东西 我正在建立一个内部网站,具有以下认证/授权目标: 使用roles类自定义角色 无需登录,如果您已登录windows,则可以查看该应用程序 能够使用[授权(Roles=“Admin”)]类型的属性 能够从用户管理页面管理用户(创建/删除/列出/编辑) 我一直在关注这一点: 但我不知道如何创建/列出用户。。。这就是我到目前为止所做的: 我已经添加了一个用户并将其分配给一个角色,当我使用Membership.GetAllUsers

旁注:我使用的是vs2013 express,没有安装其他任何东西

我正在建立一个内部网站,具有以下认证/授权目标:

  • 使用roles类自定义角色
  • 无需登录,如果您已登录windows,则可以查看该应用程序
  • 能够使用[授权(Roles=“Admin”)]类型的属性
  • 能够从用户管理页面管理用户(创建/删除/列出/编辑)
我一直在关注这一点:

但我不知道如何创建/列出用户。。。这就是我到目前为止所做的:

我已经添加了一个用户并将其分配给一个角色,当我使用Membership.GetAllUsers()时,它将返回none

Web.config位:

<authentication mode="Windows"></authentication>

<authorization>
  <deny users="?" />
</authorization>

<roleManager enabled="true" defaultProvider="SqlRoleManager">
  <providers>
    <clear/>

    <add name="SqlRoleManager"
         type="System.Web.Security.SqlRoleProvider"
         connectionStringName="EFDbContext"
         applicationName="TEST" />

  </providers>
</roleManager>

<membership defaultProvider="SqlProvider"
  userIsOnlineTimeWindow="15">
  <providers>
    <add
      name="SqlProvider"
      type="System.Web.Security.SqlMembershipProvider"
      connectionStringName="EFDbContext"
      applicationName="TEST"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="true"
      requiresUniqueEmail="false"
      passwordFormat="Hashed"
      maxInvalidPasswordAttempts="5"
      passwordAttemptWindow="10" />
  </providers>
</membership>
用户和角色正在工作,因为如果我阻止对管理员的访问,我将被允许进入。。然而,如果我创建用户而不添加角色,则不允许他访问。。。所以这一切都是好的和有效的

这是我阻止访问管理员的唯一角色:

[Authorize(Roles = "Admin")]
public class UserController : Controller
{
    private IUserRepository repository;

    public UserController(IUserRepository repo)
    {
        repository = repo;
    }

    public PartialViewResult List()
    {
        IEnumerable<User> users = repository.Users;

        UserListViewModel viewModel = new UserListViewModel();
        viewModel.Users = users;
        viewModel.TotalUsers = Membership.GetNumberOfUsersOnline().ToString();

        return PartialView(viewModel);
    }
}
它不返回任何用户

有什么想法吗


首先,您需要使用静态

然后您可以将该用户添加到角色中

关于你的评论:

我如何创建一个不需要密码的用户 还能够列出用户吗

我不是肯定的,但我认为您可以将密码相关属性设置为“0”是密码的“所需长度”

您可以将其添加到web.config的成员资格部分:

minRequiredPasswordLength="0"

为什么这个问题会被否决?我可以补充更多信息吗?我对C#等相当陌生。用户“JIMMYT1988\JIMMYT1988”存在?我在我的OP中添加了更多内容,说明了为什么我假设该用户确实存在。抱歉,但我不知道您是如何创建用户的。您写道:“我像这样在Global.asax中添加了我的第一个用户:”,但您添加了一个角色,而不是用户。您应该检查ASP.NET配置(Visual Studio->Project->ASP.NET配置)中的当前角色和用户;它似乎添加了一个用户,然后将该用户分配给一个角色。我在数据库中看到我的用户的条目。最后,我的用户/成员资格将在SQL中处理。。。与此chaps示例相同:很遗憾,minRequiredPasswordLength不适用于0。“其他信息:提供的密码无效。密码必须符合为默认提供程序配置的密码强度要求。”
            MembershipUserCollection users = Membership.GetAllUsers();
MembershipUser newUser = Membership.CreateUser(@"JIMMYT1988\jimmyt1988", "password");
minRequiredPasswordLength="0"