2014-01-21 24 views
0

我有一個控制檯應用程序在直接啓動時運行良好。但是,如果我從.NET應用程序啓動應用程序,則會收到錯誤12538,這似乎是一個協議錯誤。從其他應用運行exe時獲取Oracle錯誤12538

ProcessStartInfo startInfo = new ProcessStartInfo(executable, args); 
startInfo.CreateNoWindow = true; 
startInfo.UseShellExecute = false; 
startInfo.RedirectStandardOutput = true; 
startInfo.RedirectStandardError = true; 
startInfo.WindowStyle = ProcessWindowStyle.Hidden; 

Process p = new Process(); 
p.StartInfo = startInfo; 
p.EnableRaisingEvents = true; 
p.OutputDataReceived += new DataReceivedEventHandler(OnDataReceived); 
p.ErrorDataReceived += new DataReceivedEventHandler(OnErrorReceived); 
p.Exited += new EventHandler(OnProcessExit); 
p.Start(); 
p.BeginOutputReadLine(); 
p.BeginErrorReadLine(); 
p.WaitForExit(); 

任何想法會導致這種情況?在.NET應用程序確實使用64位Oracle時,控制檯應用程序使用32位,但我不認爲這會事,因爲他們在相同的內存空間是不能(或至少不應該是)

回答

0

64/32位差異會影響事物,只要您安裝了兩個Oracle驅動程序。我猜想,控制檯應用程序的連接字符串是錯誤的,或者32位驅動程序設置不正確 - 例如,64位的TNSNames文件不同。

This是對錯誤的合理描述。

+0

控制檯應用程序工作正常直接調用,所以我不會是驅動程序有問題。 我從另一個應用程序調用控制檯應用程序之前設置了TNS_ADMIN。我告訴它使用.net應用程序使用的相同的tnsnames文件。 控制檯應用程序使用的參數在兩種情況下都是相同的 – jbassking

+0

可能是在控制檯應用程序中檢查環境變量的想法嗎? –

+0

原來ORACLE_HOME和TNS_ADMIN正在被.net應用程序設置。我在調用控制檯應用程序之前從env vars中刪除了它們,並解決了問題。謝謝你的幫助。 – jbassking