Lógica ASP.NET / agrupación de conexiones y entrega de errores
-
08-07-2019 - |
Pregunta
Acabo de subir mi primer ASP.NET (como parte de mi aprendizaje de vb.net) y me metí en un lío horrible con la agrupación de conexiones (cosas divertidas suceden cuando hay más de 1 usuario de su sitio web) todo ordenado ahora mediante un mejor uso de las declaraciones try catch (bueno, la idea era aprender) PERO me preguntaba si este es el mejor / último método, ahora si el intento falla, entonces MUCHOS detalles en la página no se colocan / actualizan , así que si está haciendo un trabajo de base de datos y el intento falla, ¿vuelve a cargar la página ... redirige a sí mismo y espera que funcione la próxima vez ... o simplemente informa al usuario que hubo un error y deberían intentarlo de nuevo?
Gracias
Solución
Definitivamente debe usar las declaraciones ' using
' para todos los objetos que implementan IDisposable
(como conexiones y lectores). Una instrucción 'using' se traduce en un bloque try-finally debajo de las cubiertas, y asegura que se llame a Dispose () incluso si se produce un error.
Aquí hay un ejemplo de fragmento de código:
using (SqlConnection conn = new SqlConnection(this.connectionString))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "LoadFromRepository";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ID", fileID);
conn.Open();
using (SqlDataReader rdr =
cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
while (rdr.Read())
{
// do something with read data
}
}
}
}
Otros consejos
Si se produce un error inesperado, redirija al usuario a una página de error, ya que probablemente también ocurrirá la próxima vez.
¿Ha investigado " Uso de " declaraciones para conexiones de bases de datos y lectores?
Nunca redirigiría automáticamente y espero que funcione la próxima vez (podría entrar en un bucle infinito).
Informar al usuario y, opcionalmente, un enlace para volver a intentarlo.
Incluso es posible que desee analizar su excepción para ver si otro intento lo ayudará. Algunas excepciones son realmente errores, y otro intento no ayudará.