Pregunta

Al anular MembershipProvider y llamarlo directamente, ¿hay alguna forma de completar el parámetro de configuración NameValueCollection del método Initialize sin buscar manualmente en el archivo de configuración las configuraciones?

Obviamente, asp.net está llamando a esta Inicialización y la configuración se está completando en alguna parte. He implementado mi propio MembershipProvider y funciona bien a través de los controles integrados. Me gustaría crear una nueva instancia de mi proveedor y hacer una llamada directamente a él, pero realmente no quiero analizar el .config para MembershipProvider, es el nombre de la cadena de conexión y luego la cadena de conexión si ya se está haciendo en algún lugar .

¿Fue útil?

Solución

tvanfosson- Gracias por la ayuda. (Si tuviera los 15 puntos necesarios, te votaría)

Desde su enlace pude resolverlo. Resulta que el segundo parámetro para el procedimiento Inicializar era la lista de parámetros del proveedor y se podía llegar de la siguiente manera:

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

Otros consejos

No estoy seguro de por qué desea crear uno nuevo, pero si lo crea usted mismo, deberá leer la configuración web y obtener los valores para pasarlos a Initialize () ya que esto se hace fuera de la clase. Sin embargo, estoy seguro de que ya existe un controlador de sección para esta sección, por lo que debería ser solo una cuestión de hacerlo:

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

Luego encuentre su proveedor y acceda a sus propiedades para construir NameValueCollection. No creo que deba escribir ningún código para analizar la sección de configuración.

Aquí está la documentación de MembershipSection en MSDN. Profundice desde allí.

En cualquier caso, no debe crear una instancia de MembershipProvider. Se está creando e inicializando mediante la infraestructura estándar de asp.net. Puede acceder a él por código como este:

var customerMembership = Membership.Provider;

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top