我正在使用两个会员提供商。当我宣布以下声明时
Dim allUsers As MembershipUserCollection = Membership.Providers("MembershipRoleManager").GetAllUsers
然后,它给了我这个错误信息。
Argument not specified for paramenter 'totalRecords' of 'Public MustOverride Function GetAllUsers(pageIndex as Integer, pageSize as Integer, ByRef totalRecords as Integer) As System.Web.Security.MembershipUserCollection'
然后,我添加了它所要求的内容:
Dim allUsers As MembershipUserCollection = Membership.Providers("MembershipRoleManager").GetAllUsers(1, 50, 100)
我得不到任何回报。我调试了它,allUsers = Nothing。
上述声明出了什么问题?
在调用Membership.Providers(“MembershipRoleManager”)时,是否真的需要提供参数.GetAllUsers?
更新1
如果,我使用了以下声明:
Dim allUsers As MembershipUserCollection = Membership.Providers("MembershipRoleManager").GetAllUsers(0, 0, totalUser)
我收到此错误消息:
The pageSize must be greater than zero.
Parameter name: pageSize.
[ArgumentException: The pageSize must be greater than zero.
Parameter name: pageSize]
System.Web.Security.SqlMembershipProvider.GetAllUsers(Int32 pageIndex, Int32 pageSize, Int32& totalRecords) +1848357
但是如果我提供了pageSize参数,它就可以了:
Dim pageSize As Integer = GetTotalNumberOfUser()
Dim allUsers As MembershipUserCollection = Membership.Providers("MembershipRoleManager").GetAllUsers(0, pageSize, totalUser)
此语句Dim pageSize As Integer = GetTotalNumberOfUser()返回总计数记录,它已经往返数据库,只是为了得到用户总数,因为我需要提供pageSize参数值。
答案 0 :(得分:2)
R.E。 #1:totalRecords是一个外部参数。
int totalRecords;
Membership.Providers["xxxx"].GetAllUsers(0, 10, out totalRecords);
VB
Dim totalRecords As Integer
Membership.Providers("xxxx").GetAllUsers(0, 10, totalRecords)
您使用totalRecords
获取分页记录计数,例如
R.E。 #2:嗯,不,你不必提供参数值,除非你希望代码以预期的方式运行。大声笑。我肯定不会错过我写作vb的12年。
但是,认真对待。是的,提供参考文件,记录结果。多数民众赞成如何运作。来自 MSDN
GetAllUsers返回的结果 受pageIndex约束 pageSize参数。 pageSize 参数标识最大值 MembershipUser对象的数量 回来了 MembershipUserCollection。该 pageIndex参数标识哪个 要返回的结果页面,其中0 标识第一页。该 totalRecords参数是一个输出 设置为总计的参数 的会员数量 配置的applicationName。对于 例如,如果有13个用户 配置的applicationName和 pageSdex的pageIndex值为1 5,MembershipUserCollection 返回将包含第六个 通过第十个用户返回。 totalRecords将设置为13。
答案 1 :(得分:0)
GetAllUsers(int, int, int)
是designed to be used to paginate through your users,因此您需要传递您正在开始的结果页面,每页的结果数量,并且它将使用记录总数填充第三个参数:
以数据页
获取数据库中所有用户的集合
GetAllUsers()
附带following warning:
将GetAllUsers方法用于非常大的用户数据库时要小心,因为ASP.NET页面中生成的MembershipUserCollection可能会降低应用程序的性能。
但是,在你的问题中,你说你正在使用两个不同的会员提供者 - 你说使用CustomSqlRoleManager
不会返回任何用户,而(大概)你会从MembershipRoleManager
获得结果。
您是否尝试使用GetAllUsers()
调用MembershipRoleManager
?
目前CustomSqlRoleManager
后面的数据库是否可能没有任何用户?有可能CustomSqlRoleManager
名称不是很差,根本不处理成员,只有角色吗?