Estoy creando un proveedor de membresía personalizado para mi aplicación asp.net. También creé una clase separada "DBConnect" que proporciona funcionalidad de base de datos como Ejecución de instrucción SQL, Ejecución de SP, Ejecución de SP o Consulta y devolución de SqlDataReader, etc.Proporcionar funcionalidad de base de datos personalizada al proveedor de membresía de asp.net personalizado
He creado una instancia de clase DBConnect dentro de Session_Start of Global.asax y almacenado en una sesión. Más tarde, utilizando una clase estática, proporciono la funcionalidad de la base de datos en toda la aplicación utilizando la misma sesión. En resumen, estoy proporcionando un punto único para todas las operaciones de base de datos desde cualquier página asp.net.
Sé que puedo escribir mi propio código para conectar/desconectar la base de datos y ejecutar SP dentro de los métodos que necesito sobrescribir. Por favor, mire el código de abajo -
public class SGI_MembershipProvider : MembershipProvider
{
......
public override bool ChangePassword(string username, string oldPassword, string newPassword)
{
if (!ValidateUser(username, oldPassword))
return false;
ValidatePasswordEventArgs args = new ValidatePasswordEventArgs(username, newPassword, true);
OnValidatingPassword(args);
if (args.Cancel)
{
if (args.FailureInformation != null)
{
throw args.FailureInformation;
}
else
{
throw new Exception("Change password canceled due to new password validation failure.");
}
}
.....
//Database connectivity and code execution to change password.
}
....
}
MI PROBLEMA - Ahora lo que necesito es para ejecutar la parte de base de datos dentro de todos estos métodos sobrecargadas de la misma base de datos punto como se describe en la parte superior. Es decir, tengo que pasar la instancia de DBConnect existente en la sesión a esta clase, para poder acceder a los métodos.
¿Alguien podría dar una solución al respecto? Puede que haya algunas técnicas mejores que no conozco. El enfoque que estoy usando podría ser incorrecto. Tus sugerencias siempre son bienvenidas
Gracias por compartir su valioso tiempo.
Gracias James! No hago exactamente lo mismo para el funcionamiento de la base de datos. Pero en lugar de ChangePassword() como miembro de DBConnect, necesito ejecutar una parte pequeña como SqlParameter [] p = new SqlParameter [3]; p [0] = new SqlParameter ("@ applicationName", applicationName); p [1] = new SqlParameter ("@ username", username); p [2] = new SqlParameter ("@ password", EncodePassword (newPassword)); bool retval = dbConn.ExecuteSP ("User_ChangePassword", p); dentro de Mi clase MembershipProvider. – IrfanRaza
Ese código debe ir en db connect, los valores para los parámetros sql se deben pasar como parámetros en la función estática. No se preocupe, todo se ejecutará en el mismo proceso y las conexiones se agruparán en ado.net. –