会员提供商中的 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”

多个会员提供者,一个用户

使用 ASP.Net 会员提供商忘记密码?