lógica ASP.NET / pool de conexão e tratamento de erros
-
08-07-2019 - |
Pergunta
Eu apenas enviou o meu primeiro ASP.NET (como parte do meu aprendizado de vb.net) e entrou terrível confusão com o pool de conexão (coisas engraçadas acontecem quando há mais de 1 utilizador do seu web site) tudo resolvido agora através de uma melhor utilização das declarações try catch (bem a ideia era aprender), mas eu queria saber se este é o melhor método / final, agora, se a tentativa falhar, então um monte de detalhes sobre a página não é colocado / atualizado , por isso, se você está fazendo algum trabalho de banco de dados ea tentativa falhar, você recarregar a página ... redirecionamento para si mesmo e espero que trabalhar na próxima vez ... ou apenas informar o usuário houve um erro e eles devem tentar de novo?
Graças
Solução
Você deve definitivamente usar declarações de using
'para todos os objetos que implementam IDisposable
(como conexões e leitores). A 'usando' declaração é traduzida em um bloco try-finally debaixo das cobertas, e garante que Dispose () é chamado, mesmo se ocorrer um erro.
Aqui está um exemplo de trecho 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
}
}
}
}
Outras dicas
Se ocorrer um erro inesperado, redirecionar o usuário para uma página de erro, uma vez que provavelmente irá acontecer na próxima vez também.
Você já olhou em "Uso" declarações para conexões de banco de dados e leitores?
Eu nunca iria redirecionar automaticamente e esperança de que ele vai trabalhar na próxima vez (que você pode entrar em um loop infinito).
Informe o usuário e, opcionalmente, um link para tentar novamente.
Você mesmo pode querer analisar o seu exceção para ver se outra tentativa vai ajudar. Algumas exceções são realmente bugs, e uma outra tentativa não vai ajudar.