Domanda

Quando si esegue l'override di MembershipProvider e lo si chiama direttamente, esiste un modo per riempire il parametro di configurazione NameValueCollection del metodo Initialize senza cercare manualmente le impostazioni nel file di configurazione?

Ovviamente questo Initialize viene chiamato da asp.net e la configurazione viene riempita da qualche parte. Ho implementato il mio MembershipProvider e funziona bene attraverso i controlli integrati. Vorrei creare una nuova istanza del mio provider ed effettuare una chiamata direttamente, ma non voglio davvero analizzare il .config per MembershipProvider, è il nome della stringa di connessione e quindi la stringa di connessione se è già stata eseguita da qualche parte .

È stato utile?

Soluzione

tvanfosson- Grazie per l'aiuto. (Se avessi i 15 punti necessari, ti voterei)

Dal tuo link sono stato in grado di capirlo. Risulta che il secondo parametro alla procedura di inizializzazione era l'elenco di parametri dal provider e poteva essere raggiunto nel modo seguente:

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);

Altri suggerimenti

Non sei sicuro del motivo per cui vuoi crearne uno nuovo, ma se lo crei tu stesso, dovrai leggere la configurazione web e far passare tu stesso i valori a Initialize () poiché questo viene fatto al di fuori della classe. Sono sicuro, tuttavia, che esiste già un gestore di sezione per questa sezione, quindi dovrebbe essere solo una questione di fare:

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

Quindi trova il tuo provider e accedi alle sue proprietà per costruire NameValueCollection. Non credo che dovrai scrivere alcun codice per analizzare la sezione di configurazione.

Ecco la MembershipSection all'indirizzo MSDN. Esegui il drill down da lì.

In ogni caso non dovresti creare un'istanza di MembershipProvider. Sta creando e inizializzando tramite l'infrastruttura standard asp.net. Puoi accedervi con un codice come questo:

var customerMembership = Membership.Provider;

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top