会员提供商中的GetAllUsers在哪里?

时间:2012-05-18 09:31:02

标签: asp.net-mvc asp.net-mvc-3 model-view-controller asp.net-membership membership-provider

我查看了成员资格提供程序文档,成员资格提供程序(http://msdn.microsoft.com/en-us/library/system.web.security.membership.getallusers)中应该有两个GetAllUsers方法。

但是当我查看System.Web.Security公开的方法时(在

中)
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.ApplicationServices.dll )

它只有一种方法(具有分页功能的方法)。

在哪里可以找到从数据库返回所有用户的方法?似乎无法获取所有用户的列表或查找数据库中有多少用户。

- 更新

查看System.Web.Security,我发现SqlMembershipProvider定义如下:

public class SqlMembershipProvider : System.Web.Security.MembershipProvider

但是这个类没有任何公共GetAllUsers()方法。

如何访问其基本GetAllUsers方法?

3 个答案:

答案 0 :(得分:0)

我认为您应该查看System.Web.dll而不是System.Web.ApplicationServices.dll

答案 1 :(得分:0)

它的工作方式是您必须在web.config中配置您的会员资格提供程序,例如SqlMembershipProvider。然后,Membership.GetAllUsers方法将采用默认配置的MembershipProvider并调用其方法GetAllUsers并传入0以获取当前页面索引,并传递int.MaxValue以获取总记录每页(以及out int以获取商店中的总记录)。

如果您在调用此方法时遇到问题,请检查以下内容:

  • 您引用了正确的.net程序集
    • System.Web
    • System.Web.ApplicationServices
    • System.Configuration
  • 您也可以使用正确的命名空间System.Web.Security
    • 在文件顶部的using语句中
    • 直接在引用的类型
  • 您的web.config已注册默认MembershipProvider

备注

  • SqlMembershipProvider派生自MembershipProvider,与Membership类型的类型或类型层次结构不同。因此,您在Membership上看到的所有方法都不能在MembershipProvider派生的类型中找到。
  • 类型Membership是静态的,因此包括Membership.GetAllUsers在内的所有成员也都是静态的。
  • Membership类型是为了方便,大部分成员都会调用已注册的默认MembershipProvider

代码示例:

using System.Web.Security;
namespace MyNameSpace
{
    public class MembershipTests
    {
        public void Test()
        {
            var users = Membership.GetAllUsers();
            // same as
            var totalRecords = 0;
            users = Membership.GetAllUsers(0, int.MaxValue, out totalRecords);
            // same as (Membership.Provider gets the default registered MembershipProvider)
            users = Membership.Provider.GetAllUsers(0, int.MaxValue, out totalRecords);
        }
    }
}

来自文档

  

说明

     

GetAllUsers将应用程序的所有成员资格用户的信息作为MembershipUser对象的集合返回。将GetAllUsers方法与非常大的用户数据库一起使用时要小心,因为ASP.NET页面中生成的MembershipUserCollection可能会降低应用程序的性能。

答案 2 :(得分:0)

问题是“会员提供商中的GetAllUsers在哪里?”

答案是它不在MembershipProvider中。它位于System.Web.Security.Membership

您在问题中提供的MSDN链接说明了同样的事情。

方法GetAllUsers静态和重载。

int userCount = 0;
MembershipUserCollection muc1 =  System.Web.Security.Membership.GetAllUsers();
MembershipUserCollection muc2 = System.Web.Security.Membership.GetAllUsers(0, int.MaxValue, out userCount);

如果您遇到命名空间问题,他们会在.net 3.5和.net 4.0

之间改变一些东西

几年前我就这么说。

.Net 4.0 System.Web.Security.MembershipProvider ambiguous reference?