Odac & C # - TNS: Connect Timeout произошла - подключение только через отладчик VS2005

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

Вопрос

Я новичок в Oracle, и есть проблема, которую я сталкиваюсь. Когда я запускаю приложение из IDE - Visual Studio 2005, соединение с базой данных установлено гладко, но когда я запускаю установленную версию приложения, соединение DB не удается и получаю TNS: Connect Timeout произошла ошибка.

Я попробовал с SQLNET.ORA и подобные решения, найденные в Интернете, но я не мог решить проблему. Интересно, почему это происходит, так как приложение, проходящее через IDE и через установку, на одном ПК. Я убедился, что файл TNSnames.ora был правильно отредактирован, и я могу подключиться через экземпляр приложения, запущенного непосредственно на 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;
}
.

Трассировка стека читается так:

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)
.

tnsnames.ora - это что-то подобное:

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 )
    )
  )
.

В то же время мне выдавалось ошибку ContextswitchDeadlock через отладчик, поэтому я следовал инструкциям и изменил атрибут из Stathread в Mtathread на Main (). Больше нет contextswitchdeadlock - и все же проблема соединения сохраняется.

Я надеялся, что вы сможете пролить свет по этому вопросу - я близок, чтобы вытащить мои волосы. Любое понимание будет оценено.

Это было полезно?

Решение

Выпуск

был решен.Большое спасибо за вашу помощь, все!:) Оказалось сочетание коррумпированных ODAC DLL, а затем некоторые.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top