我查看了成员资格提供程序文档,成员资格提供程序(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方法?
答案 0 :(得分:0)
我认为您应该查看System.Web.dll而不是System.Web.ApplicationServices.dll
答案 1 :(得分:0)
它的工作方式是您必须在web.config
中配置您的会员资格提供程序,例如SqlMembershipProvider。然后,Membership.GetAllUsers方法将采用默认配置的MembershipProvider
并调用其方法GetAllUsers并传入0
以获取当前页面索引,并传递int.MaxValue
以获取总记录每页(以及out int
以获取商店中的总记录)。
如果您在调用此方法时遇到问题,请检查以下内容:
System.Web
System.Web.ApplicationServices
System.Configuration
System.Web.Security
using
语句中web.config
已注册默认MembershipProvider
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?