2014-01-21 2 views
0

У меня есть консольное приложение, которое отлично работает при запуске напрямую. Однако, если я запускаю приложение из приложения .NET, я получаю ошибку 12538, которая, кажется, является ошибкой протокола.Получение ошибки Oracle 12538 при запуске exe из другого приложения

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-разрядный драйвер настроен неправильно - другой файл TNSNames из 64-разрядного экземпляра, например.

This - это разумное описание ошибки.

+0

Консольное приложение работает нормально, поэтому я не буду иметь проблемы с драйвером. Я установил TNS_ADMIN перед вызовом консольного приложения из другого приложения. Я говорю ему использовать тот же файл tnsnames, который использует приложение .net. Параметры, используемые консольным приложением, одинаковы в обоих случаях. – jbassking

+0

Может быть, стоит проверить переменные окружения в консольном приложении? –

+0

Выключено ORACLE_HOME и TNS_ADMIN были установлены приложением .net. Я удалил их оба из env vars до вызова консольного приложения, и он устранил проблему. Спасибо за вашу помощь. – jbassking

Смежные вопросы