簡體   English   中英

ODAC&C#-TNS:發生連接超時-僅通過VS2005調試器進行連接

[英]ODAC & C# - TNS: Connect timeout occurred - Connecting only through VS2005 debugger

我是Oracle的新手,我面臨一個問題。 當我從IDE-Visual Studio 2005運行該應用程序時,數據庫連接建立得很順利,但是當我運行該應用程序的已安裝版本時,數據庫連接失敗並且出現了TNS:發生連接超時錯誤。

我嘗試使用SQLNET.ORA和在線找到的類似解決方案,但無法解決問題。 我不知道為什么會這樣,因為通過IDE和安裝運行的應用程序在同一台PC上。 我確保正確編輯了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錯誤,因此我按照說明進行了操作,並將Main()上的屬性從STAThread更改為MTAThread。 不再需要ContextSwitchDeadlock-並且,連接問題仍然存在。

我希望您能對此問題有所了解-我快要拔頭發了。 任何見識將不勝感激。

問題已解決。 非常感謝大家的幫助! :)原來是損壞的ODAC dll的組合,然后是一些。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM