我有一个控制台应用程序,可以在直接启动时运行正常。但是,如果我从.NET应用程序启动应用程序,我会收到错误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();
任何想法会导致什么?当控制台应用程序使用32位时,.NET应用程序确实使用64位Oracle,但我认为这不重要,因为它们不在相同的内存空间中(或者至少不应该是这样)
答案 0 :(得分:0)
只要您安装了两个Oracle驱动程序,64/32位差异就会对事情产生影响。我猜测控制台应用程序的连接字符串是错误的,或者32位驱动程序设置错误 - 例如,64位驱动程序中的TNSNames文件不同。
This是对错误的合理描述。