ODAC & C # - TNS: si è verificato il timeout di connessione - Collegamento solo tramite il debugger VS2005

StackOverflow https://stackoverflow.com/questions/3298104

Domanda

Sono nuovo per Oracle, e c'è un problema che sto affrontando. Quando eseguo l'applicazione da IDE - Visual Studio 2005, la connessione del database viene stabilita senza intoppi, ma quando eseguo una versione installata dell'app, la connessione DB non riesce e ottengo un TNS: il timeout di connessione si è verificato Errore.

Ho provato con SQLNet.ora e soluzioni simili trovate online, ma non ho potuto risolvere il problema. Mi chiedo perché ciò accada, poiché l'applicazione che attraversa l'IDE e attraverso un'installazione è sullo stesso PC. Mi sono assicurato che il file TNSNAMES.ORA sia stato modificato correttamente e posso connettermi tramite un'istanza dell'applicazione che funziona direttamente su Visual Studio.

public bool connectToDatabase(string dbConnStr)
{
    try
    {
        databaseConnection = dbConnStr;
        OracleConnection dbConn = new OracleConnection(databaseConnection);
        if (dbConn == null)
        {
            CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, "Connection object is null");
            return false;
        }
        if (dbConn.State.ToString().Equals("Closed", StringComparison.OrdinalIgnoreCase))
        {
            CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, "DB connection - " + dbConn.ConnectionString);
            dbConn.Open();
            return true;
        }
    }
    catch (Exception ex)
    {
        CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, ex.Message + "\n" + ex.StackTrace);
        CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, "DB String - " + databaseConnection);

        return false;
    }
    return false;
}
.

La traccia dello stack si legge in questo modo:

7/22/2010 6:38:51 PM    ORA-12170: TNS:Connect timeout occurred
   at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
   at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
   at Oracle.DataAccess.Client.OracleConnection.Open()
   at SQL.connectToDatabase(String dbConnStr)
.

the tnsnames.ora è qualcosa del genere:

MySource =
  (DESCRIPTION =
    (CONNECT_TIMEOUT=180)(RETRY_COUNT=2)
    (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 125.63.77.232)(PORT = 1521)))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MySource )
    )
  )
.

Nel frattempo, mi è stato emesso un errore Contextswitchdeadlock attraverso il debugger, quindi ho seguito le istruzioni e ha cambiato l'attributo da Stathread a MTathRead su Main (). Niente più contextswitchdeadlock - e ancora, il problema della connessione persiste.

Speravo che tu potessi far luce sulla questione - sono vicino a tirarmi fuori i capelli. Qualsiasi intuizione sarebbe apprezzata.

È stato utile?

Soluzione

Problema è stato risolto.Grazie mille per il tuo aiuto, tutti!:) si è rivelato una combinazione di DLL danneggiati ODAC e poi alcuni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top