【问题标题】:System.Data.OracleClient requires Oracle client software version 8.1.7System.Data.OracleClient 需要 Oracle 客户端软件版本 8.1.7
【发布时间】:2010-10-01 16:05:21
【问题描述】:

我有一个使用 Vb.net9 在 Vista 上开发的网站。它与 Oracle 建立连接。对于我使用 System.Data.OracleClient 的连接。它在我的机器和我们的测试服务器上运行良好,但在生产服务器上不起作用。我们在服务器上安装了 Oracle Client 11。错误是 System.Data.OracleClient 需要 Oracle 客户端软件版本 8.1.7

我们已经尝试过,制作一个打开连接的控制台应用程序,连接运行正常,打开,显示一条消息,一切都很好。

然后我们做一个简单的web表单,放到程序的目录下,就一个按钮,打开连接,try..catch,抓取错误,同样的错误。

控制台应用程序在管理员下运行,网站在 iwam 下运行。 iwam有没有可能有不同的路径?

【问题讨论】:

    标签: vb.net oracle


    【解决方案1】:

    我已经多次遇到这个错误:

    原因

    在使用 NTFS 的 Windows 上安装 Oracle 客户端时,未正确设置安全权限。这样做的结果是ORACLE_HOME 目录的内容对机器上的 Authenticated Users 是不可见的;这会在 System.Data.OracleClient 使用 Authenticated User 权限从 ASP.NET 与 Oracle Connectivity 软件通信时导致错误。

    解决方案

    要解决此问题,您必须将 Authenticated Users 组权限授予 Oracle 主目录。

    • 以具有管理员权限的用户身份登录到 Windows。
    • 启动 Windows 资源管理器并导航到 ORACLE_HOME 文件夹。
    • ORACLE_HOME 文件夹中选择属性。
    • 单击属性窗口的安全标签。
    • 点击姓名列表中的Authenticated Users项。
    • 取消选中允许列下权限列表中的读取和执行框。
    • 重新选中允许列下的读取和执行框。
    • 单击高级按钮并在权限条目中验证Authenticated Users是否列出了权限:读取和执行 em>,并应用到:此文件夹、子文件夹和文件。如果不是,请编辑该行并确保将 Apply To 下拉框设置为 此文件夹、子文件夹和文件。这应该已经正确设置,但验证它很重要。
    • 单击“确定”按钮,直到关闭所有安全属性窗口。光标可能会显示沙漏几秒钟,因为它会将您刚刚更改的权限应用于所有子文件夹和文件。
    • 重新启动,以确保更改已生效。

    再次尝试您的应用程序。

    【讨论】:

    • 我以前听说过这个令人费解的把戏。很难相信它有效,但确实有效。
    • 我们有一个变体——运行 SS Reporting Services 的用户不是“经过身份验证的用户”的一部分,因此我们只需要确保特定用户可以访问正确的文件夹.但总而言之,这是很好的有用信息!
    • 谢谢!我在部署到生产服务器时遇到了这个问题并四处搜索并找到了您的答案。所以。有效!
    • 这个错误是否只出现一次?当我尝试通过 imp.exe 导入 Oracle db 时出现相同的消息,但它仅在安装 Oracle 客户端 11 后发生一次
    • 我在哪里可以找到ORACLE_HOME 文件夹?安装 Oracle Database Client 12c 第 1 版时,它不会在选定的安装路径中创建名为 ORACLE_HOME 的文件夹。也没有名为 ORACLE_HOME 的环境变量。
    【解决方案2】:

    这篇文章的作者(现已删除的文章)建议检查您的C:\Windows\System32 文件夹以确保oci.dll 存在于那里。从 Oracle 主目录复制文件为我解决了这个问题。

    【讨论】:

      【解决方案3】:

      更新 1: 不同的用户可能有不同的路径。但这不是这里可能的问题。 iwam用户没有oracle客户端目录权限的用户更有可能。

      更新 0: 它应该可以工作。检查环境变量(查找 oracle 客户端和 tnsnames.ora 所需的变量)。另外,也许您有 32/64 位问题。另外,考虑使用 Oracle Data Provider for .NET(搜索 odp.net)

      【讨论】:

        【解决方案4】:

        Oracle 客户端版本 11 无法连接到 8i 数据库。您最多需要一个版本 10 的客户端。

        【讨论】:

          【解决方案5】:

          当我们第一次使用 Oracle 10g 迁移到 Vista 时,我们在 Vista 机器上安装 Oracle 客户端时遇到了这个问题,即使我们在安装期间以管理员权限运行。

          Oracle 推出了与 Vista 兼容的 10g 客户端 (10.2.0.3) 的新版本。

          我确实相信这是在 11g 发布之后,所以也有可能有一个 11g 的“Vista 兼容”版本。

          【讨论】:

            【解决方案6】:

            为什么不使用这个:dotConnect for Oracle(以前称为 OraDirect .NET)?

            可以将其配置为根本不需要 Oracle 客户端。

            我们一直在 Windows 服务和 ASP.NET Web 服务中使用它,它就像一个魅力。

            【讨论】:

              【解决方案7】:

              对我来说,问题是我的 Visual Studio 中的某个插件开始强制我的应用程序进入 x64 64 位模式,因此由于我安装了 Oracle 32 位,所以找不到 Oracle 驱动程序。

              因此,如果您遇到此问题,请尝试在安全模式 (devenv /safemode) 下运行 Visual Studio。 通过使用 SysInternals/Microsoft 的 ProcMon 应用程序,我可以发现它正在 SYSWOW64 中查找 ic.dll 文件。

              更新:对我来说,是 Telerik JustTrace 产品导致了这个问题,它可能会挂接并以某种方式影响运行时版本以进行跟踪。

              Update2:不仅仅是 JustTrace 引起了问题,JustMock 也引起了相同的处理器模式问题。不过,JustMock 更容易修复:单击 JustMock-> Disable Profiler,然后我的 Web 应用程序的 oracle 驱动程序在正确的 CPU 模式下运行。 Telerik 将来可能会解决此问题。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2015-05-27
                • 2022-08-11
                • 1970-01-01
                • 2013-10-21
                • 1970-01-01
                • 2018-09-10
                相关资源
                最近更新 更多