Un'applicazione ADO.Net è solo talvolta in grado di connettersi a un altro server sulla rete locale. Sembra casuale se un determinato tentativo di connessione ha esito positivo o negativo. La connessione utilizza una stringa di connessione nella forma:
Server = THESERVER \ TheInstance; Database = TheDatabase; ID utente = TheUser; Password = ThePassword;
l'errore restituito è:
Timeout connessione scaduto. Il periodo di timeout è trascorso durante il tentativo di utilizzare il riconoscimento dell'handshake di pre-accesso.
Ciò potrebbe essere dovuto al fatto che l'handshake di pre-accesso non è riuscito o il server non è stato in grado di rispondere in tempo.
La durata spesa durante il tentativo di connessione a questo server è stata: inizializzazione [Pre-Login] = 42030; stretta di mano = 0;
L'applicazione .NET è una piccola app di test che esegue il codice seguente:
using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn))
{
conn.Open();
int rowCount = (int)cmd.ExecuteScalar();
}
La tabella è piccola, solo 78 righe.
Tuttavia, sulla stessa macchina in cui l'applicazione .NET riceve questo errore, sono in grado di connettersi a THESERVER utilizzando SSMS e l'ID utente / password indicati nella stringa di connessione.
Perché la connessione potrebbe non riuscire da un'app ADO.Net, ma riuscire con credenziali identiche da SSMS?