1

두 멤버 자격 공급자를 사용하고 있습니다. 다음 문장을 선언 할 때ASP.NET 두 공급자가있는 회원은 GetAllUsers 메서드를 사용할 수 없습니다.

Dim allUsers As MembershipUserCollection = Membership.Providers("MembershipRoleManager").GetAllUsers 

그런 다음이 오류 메시지가 나타납니다.

Dim allUsers As MembershipUserCollection = Membership.Providers("MembershipRoleManager").GetAllUsers(1, 50, 100) 

내가 대가로 아무것도 얻지 않는다 :

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' 

그 후, 나는이 같은 요구 것을 추가했다. 나는 그것을 디버깅했고 allUsers = 아무것도 없었다.

  1. 위의 선언에 무엇이 잘못 되었습니까?

  2. Membership.Providers ("MembershipRoleManager")를 호출 할 때 정말로 paramenters를 제공해야합니까? GetAllUsers? 나는를 provied 경우

    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 
    

    하지만 작동 :

    Dim allUsers As MembershipUserCollection = Membership.Providers("MembershipRoleManager").GetAllUsers(0, 0, totalUser) 
    

    나는이 오류 메시지를 받았습니다 : 나는 아래 문을 사용하는 경우

업데이트 1

pageSize 매개 변수 :

Dim pageSize As Integer = GetTotalNumberOfUser() 
Dim allUsers As MembershipUserCollection = Membership.Providers("MembershipRoleManager").GetAllUsers(0, pageSize, totalUser) 

DimSize As Integer = GetTotalNumberOfUser()는 총 계산 된 레코드를 반환하며, pageSize 매개 변수 값을 제공해야하므로 전체 사용자 수를 얻기 위해 이미 데이터베이스로 왕복되었습니다.

답변

2

r.e. # 1 : totalRecords는 out 매개 변수입니다.

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 년을 놓치지 마라.

심각하게 생각합니다. 예, 문서화 된대로 매개 변수를 제공하고 문서화 된대로 결과를 얻습니다. 그게 어떻게 작동합니다. GetAllUsers 에 의해 반환

MSDN

에서 결과는 pageIndex 및 에서 pageSize 매개 변수에 의해 제한됩니다. pageSize 매개 변수는 최대 개의 MembershipUser 개체를 에 반환하고 MembershipUserCollection에 반환합니다. pageIndex 매개 변수는 반환 할 결과가 인 페이지를 식별합니다. 여기서 0 은 첫 번째 페이지를 나타냅니다. totalRecords 매개 변수는 구성된 전체 응용 프로그램 이름의 전체 구성원 사용자 수로 설정된 out 매개 변수입니다. 예를 들어, 13 applicationName에 구성된 위한 사용자 및 pageIndex 값이있는 경우 (5)의 는 상기 된 MembershipUserCollection 열 번째 사용자 통해 여섯 리턴 포함 할 리턴 pageSize가 1이되었다. totalRecords는 결과의 페이지는 당신이 시작하고 전달해야하므로

+0

입력 해 주셔서 감사합니다. 위 질문에서 업데이트 1을 참조하십시오. –

+0

@Bayonian, 네, 죄송합니다. 내 머리 꼭대기에서 그 답을 입력하십시오. 당신은 페이지 크기를 제공하고 당신이 db에서 패스를 만들기 위해 필요한 카운트를 얻을 필요가있다. 싸구려 카운트를 얻으려면 GetAllUsers (0,1, totalRecords)를 호출하십시오. 비용이 오르는 한, 이와 같은 작업은 각 페이지 수명주기의 일부가 아니어야하므로 비용을 견딜 수 있어야합니다. –

0

GetAllUsers(int, int, int)designed to be used to paginate through your users이다 (13)로 설정됩니다 페이지 당 결과 수, 그리고 전체와 세 번째 매개 변수를 채울 것 레코드 수 :

GetAllUsers()하면 following warning되어 데이터 페이지의 데이터베이스에있는 모든 사용자의 컬렉션을 가져옵니다 :

매우 큰 사용자 데이터베이스에서 GetAllUsers 메서드를 사용하면 ASP.NET 페이지의 결과 MembershipUserCollection이 응용 프로그램의 성능을 저하시킬 수 있으므로주의하십시오.

그러나, 귀하의 질문에 당신은 당신이 두 개의 서로 다른 멤버쉽 제공자를 사용하는 상태 - 당신은 (아마도) 당신이 MembershipRoleManager에서 다시 결과를 얻는 동안, CustomSqlRoleManager 반환하지 사용자가 사용하는 것을 말한다.

MembershipRoleManager을 사용하여 GetAllUsers()을 호출 해 보았습니까?

CustomSqlRoleManager 뒤에있는 데이터베이스에 현재 사용자가없는 것이 가능합니까? CustomSqlRoleManager의 이름이 잘못 지정되지 않았으며 구성원을 전혀 다루지 않고 역할 만 수행 할 수 있습니까?

+0

성능에 대한 정보 주셔서 감사합니다. 어쨌든, 방금 web.config를 수정했습니다. 오타가있는 것이 문제였습니다. –