2014-01-21 1 views
0

직접 실행할 때 잘 실행되는 콘솔 응용 프로그램이 있습니다. 그러나 .NET 응용 프로그램에서 응용 프로그램을 시작하면 프로토콜 오류 인 것으로 보이는 오류 12538이 표시됩니다.다른 응용 프로그램에서 exe를 실행할 때 오라클 오류 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(); 

어떤 원인일까요? 닷넷 애플 리케이션은 64 비트 오라클을 사용하는데 콘솔 앱이 32 비트를 사용하지만 동일한 메모리 공간이 아니기 때문에 문제가 될 것이라고 생각하지 않는다. (또는 적어도 없어야한다)

답변

0

64/32 비트 차이점은 두 오라클 드라이버가 모두 설치되어 있다면 상황에 영향을 미칩니다. 콘솔 응용 프로그램의 연결 문자열이 잘못되었거나 32 비트 드라이버가 잘못 설정되었다고 추측 할 수 있습니다. 예를 들어 64 비트에서 다른 TNSNames 파일을 설정했습니다.

This은 오류에 대한 적절한 설명입니다.

+0

콘솔 앱이 제대로 작동하므로 직접 문제가 발생하지 않습니다. 다른 앱에서 콘솔 앱을 호출하기 전에 TNS_ADMIN을 설정했습니다. .net 응용 프로그램에서 사용하는 것과 동일한 tnsnames 파일을 사용하도록 지정합니다. 콘솔 앱에서 사용중인 매개 변수는 두 경우 모두 같습니다. – jbassking

+0

콘솔 앱에서 환경 변수를 확인하는 것이 좋을까요? –

+0

ORACLE_HOME 및 TNS_ADMIN이 .net 응용 프로그램에 의해 설정되었습니다. 콘솔 앱을 호출하기 전에 둘 모두를 env 변수에서 제거하고 문제를 해결했습니다. 당신의 도움을 주셔서 감사합니다. – jbassking

관련 문제