Question

Lors de la substitution de MembershipProvider et de l'appel direct, existe-t-il un moyen de renseigner le paramètre de configuration NameValueCollection de la méthode Initialize sans rechercher manuellement les paramètres dans le fichier de configuration?

Évidemment, cette initialisation est appelée par asp.net et la configuration est remplie quelque part. J'ai implémenté mon propre MembershipProvider et cela fonctionne bien grâce aux contrôles intégrés. Je voudrais créer une nouvelle instance de mon fournisseur et l'appeler directement, mais je ne souhaite pas vraiment analyser le fichier .config pour MembershipProvider, c'est le nom de la chaîne de connexion, puis la chaîne de connexion si cela se fait déjà quelque part. .

Était-ce utile?

La solution

tvanfosson- Merci pour l'aide. (si j'avais les 15 points nécessaires, je vous voterais)

À partir de votre lien, j'ai pu le comprendre. Il s’avère que le deuxième paramètre de la procédure d’initialisation est la liste des paramètres fournis par le fournisseur et peut être atteint de la manière suivante:

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

Autres conseils

Vous ne savez pas pourquoi vous voulez en créer un nouveau, mais si vous le créez vous-même, vous devrez lire la configuration Web et obtenir les valeurs que vous transmettez à Initialize (), comme cela se fait en dehors de la classe. Cependant, je suis sûr qu'il existe déjà un gestionnaire de section pour cette section.

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

Recherchez ensuite votre fournisseur et accédez à ses propriétés pour construire NameValueCollection. Je ne pense pas que vous deviez écrire du code pour analyser la section de configuration.

Voici la MembershipSection sur le site MSDN. Percer à partir de là.

Dans tous les cas, vous ne devez pas créer d'instance de MembershipProvider. Il crée et initialise par l'infrastructure asp.net standard. Vous pouvez y accéder par un code comme celui-ci:

var customerMembership = Membership.Provider;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top