문제

멤버십 프로보더를 재정의하고 직접 호출 할 때 설정의 구성 파일을 수동으로 보지 않고 초기화 메소드의 NameValueCollection 구성 매개 변수를 채우는 방법이 있습니까?

분명히이 초기화는 asp.net에 의해 호출되고 있으며 구성은 어딘가에 채워지고 있습니다. 나는 내 자신의 멤버십 프로보더를 구현했으며 컨트롤의 빌드를 통해 잘 작동합니다. 공급자의 새 인스턴스를 만들고 직접 전화를 걸고 싶지만 멤버쉽 프로보더의 .config를 구문 분석하고 싶지는 않습니다. 연결 문자열 이름과 연결 문자열이 이미 어딘가에 수행중인 경우 연결 문자열이 필요하지 않습니다. .

도움이 되었습니까?

해결책

TVANFOSSON- 도와 주셔서 감사합니다. (내가 필요한 15 점을 가지고 있다면 나는 당신에게 투표 할 것입니다)

당신의 링크에서 나는 그것을 알아낼 수있었습니다. 초기화 절차의 두 번째 매개 변수는 제공자의 매개 변수 목록이며 다음과 같은 방식으로 도달 할 수 있습니다.

string configPath = "~/web.config";
Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);
MembershipSection section = (MembershipSection)config.GetSection("system.web/membership");
ProviderSettingsCollection settings = section.Providers;
NameValueCollection membershipParams = settings[section.DefaultProvider].Parameters;
Initialize(section.DefaultProvider, membershipParams);

다른 팁

왜 새 제품을 만들려고하는지 확실하지 않지만 직접 작성하면 웹 구성을 읽고 클래스 외부에서 수행되므로 웹 구성을 읽고 값을 초기화 ()로 전달해야합니다. 그러나이 섹션에 대한 섹션 핸들러가 이미 있다고 확신합니다.

MembershipSection section  = WebConfigurationManager.GetSection("membership");

그런 다음 제공자를 찾아서 속성에 액세스하여 NameValueCollection을 구성하십시오. 구성 섹션을 구문 분석하기 위해 코드를 작성해야한다고 생각하지 않습니다.

여기에 있습니다 멤버십 MSDN의 문서. 거기에서 드릴 다운.

어쨌든 멤버십 프로보더 인스턴스를 작성해서는 안됩니다. 표준 ASP.NET 인프라에 의해 생성 및 초기화 중입니다. 이와 같은 코드로 액세스 할 수 있습니다.

var customermbership = membership.provider;

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top