Usuário com melhor resposta
Erro de timeout : Server did not respond within the specified timeout interval

Pergunta
-
Em minha aplicação estou enfrentando um problema para realizar a conexão com a base de dados.
Erro
************** Texto de Exceção ************** System.Exception: Ocorreu um erro ao abrir a conexão ao banco de dados. ---> Devart.Data.PostgreSql.PgSqlException: Server did not respond within the specified timeout interval. ---> System.TimeoutException: Server did not respond within the specified timeout interval. ---> System.IO.IOException: Não é possível ler os dados da conexão de transporte: Uma tentativa de conexão falhou porque o componente conectado não respondeu corretamente após um período de tempo ou a conexão estabelecida falhou porque o host conectado não respondeu.
Connection String
<connectionStrings> <add name="sgConnectionString" connectionString="user id = meuid;password=meupsd;host=meushot;port=5432;database=meubanco;Unicode=True ;Connection Lifetime = 300;" providerName="System.Data.EntityClient" /> </connectionStrings>
Provider utilizado :
dotConnect for PostgreSQL 7.4 Express
Mas não e sempre que o erro acontece , o mais engraçado e que na segunda tentativa os dados são carregados normalmente , o erro só ocorre na primeira tentativa de carregar as informações , o que achei muito estranho .
Ao realizar a análise do erro eu tenho a seguinte dúvida :
Devo lançar a exceção para notificar ao usuário para tentar realizar a conexão novamente ? não sei ate que ponto devo considerar este erro normal.- Editado Matheus MSDN terça-feira, 22 de março de 2016 14:11 .
Respostas
-
Veja bem,
Eu não conheço o seu ambiente, pode não ser a melhor prática, mas para nós do fórum é difícil avaliar tudo que já fora feito, logo, se essa solução te atende, é válida.
Att., Roberto Alves
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Matheus MSDN terça-feira, 22 de março de 2016 16:07
Todas as Respostas
-
Bom dia Matheus,
Há diversos pontos para se analisar, pode até ser um problema de tráfico.
Se isso acontece só na primeira vez, então crie um Try-catch para forçar uma segunda conexão e o usuário não ser impactado, no primeiro Try você tenta a conexão, no seu catch, você cria outro try-catch realizando outra tentativa, caso não de certo, ai sim você retorna para o usuário.
Att., Roberto Alves
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde. -
hum pior que e mesmo não havia pensando nisso , você podeira complementar sua resposta fornecendo um exemplo dessa estrutura ?
- Editado Matheus MSDN terça-feira, 22 de março de 2016 14:38
-
Certo, segue uma exemplificação!
Try{ Realize a conexão. }catch(exception e){ try{ Realize a conexão novamente. }catch(Exception e2){ Devolve para o usuário } }
Att., Roberto Alves
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Sugerido como Resposta Antero Marques terça-feira, 22 de março de 2016 15:32
-
Entendi mas isso seria uma boa pratica ou só o jeito mais fácil de resolver este problema ? eu tentei mas não deu certo , vou seguir a sua ideia de tentar estabelecer a conexão mais de uma vez parece ser o caminho mais indicado para a situação
- Editado Matheus MSDN terça-feira, 22 de março de 2016 14:50
-
Veja bem,
Eu não conheço o seu ambiente, pode não ser a melhor prática, mas para nós do fórum é difícil avaliar tudo que já fora feito, logo, se essa solução te atende, é válida.
Att., Roberto Alves
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Matheus MSDN terça-feira, 22 de março de 2016 16:07