会员提供商中的 GetAllUsers 在哪里?
Posted
技术标签:
【中文标题】会员提供商中的 GetAllUsers 在哪里?【英文标题】:Where is GetAllUsers in membership provider? 【发布时间】:2012-05-25 21:03:51 【问题描述】:我查看了会员提供者文档,会员提供者 (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 方法?
【问题讨论】:
当你真正调用“Membership.GetAllUsers()”时会发生什么? 出现此错误:错误 17 方法“GetAllUsers”没有重载需要 0 个参数 您使用的是哪个版本和类型(原始/MVC)ASP.Net? 我将 MVc 3 与 .Net 4 一起使用。 嗨,Mans,您是否偶然发现了解决方案? 【参考方案1】:问题是“会员提供商中的 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?
【讨论】:
【参考方案2】:它的工作方式是您必须在您的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
注意事项
派生自MembershipProvider
的SqlMembershipProvider 与类型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 可能会降低应用程序的性能。
【讨论】:
【参考方案3】:我认为您应该查看 System.Web.dll 而不是 System.Web.ApplicationServices.dll
【讨论】:
查看这个dll,我发现: 您不是在寻找 System.Web.Security.Membership.GetAllUsers() 吗?...它在 Membership 中,而不是 SqlMembershipProvider。 我无法通过 SqlMembershipProvider 访问它。以上是关于会员提供商中的 GetAllUsers 在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
我添加了一个用户并将他分配给一个角色,当我使用 Membership.GetAllUsers() 它返回无
ANGULARJS:“XMLHttpRequest 无法加载 http://localhost:62259/Service1.svc/getAllUsers。无效的 HTTP 状态代码 405”