【问题标题】:Getting Oracle error 12538 when running exe from another app从另一个应用程序运行 exe 时出现 Oracle 错误 12538
【发布时间】:2014-01-22 01:42:01
【问题描述】:

我有一个控制台应用程序在直接启动时运行良好。但是,如果我从 .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,但我认为这并不重要,因为它们不在同一个内存空间中(或者至少不应该)

【问题讨论】:

    标签: c# .net oracle


    【解决方案1】:

    只要您同时安装了两个 Oracle 驱动程序,64/32 位差异就会产生影响。我猜可能是控制台应用程序的连接字符串错误,或者 32 位驱动程序设置不正确 - 例如与 64 位驱动程序不同的 TNSNames 文件。

    This 是对错误的合理描述。

    【讨论】:

    • 控制台应用程序可以正常调用直接调用,所以我不会成为驱动程序的问题。我在从另一个应用程序调用控制台应用程序之前设置了 TNS_ADMIN。我告诉它使用 .net 应用程序使用的相同 tnsnames 文件。控制台应用程序使用的参数在两种情况下都是相同的
    • 在控制台应用程序中检查环境变量可能是一个想法?
    • 原来 ORACLE_HOME 和 TNS_ADMIN 正在由 .net 应用程序设置。在调用控制台应用程序之前,我从环境变量中删除了它们,它解决了问题。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多