У меня есть консольное приложение, которое отлично работает при запуске напрямую. Однако, если я запускаю приложение из приложения .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-битное, но я бы не подумал, что это имеет значение, поскольку они не находятся в одном и том же пространстве памяти (или, по крайней мере, не должны быть).
Консольное приложение работает нормально, поэтому я не буду иметь проблемы с драйвером. Я установил TNS_ADMIN перед вызовом консольного приложения из другого приложения. Я говорю ему использовать тот же файл tnsnames, который использует приложение .net. Параметры, используемые консольным приложением, одинаковы в обоих случаях. – jbassking
Может быть, стоит проверить переменные окружения в консольном приложении? –
Выключено ORACLE_HOME и TNS_ADMIN были установлены приложением .net. Я удалил их оба из env vars до вызова консольного приложения, и он устранил проблему. Спасибо за вашу помощь. – jbassking