首页 文章

如何在仅具有Oracle 12c的计算机上托管使用Oracle 11g的ASP.NET应用程序?

提问于
浏览
5

我的ASP.NET应用程序在Windows Server 2008 R2服务器上运行 . 已安装Oracle 11g .

我将此应用程序部署到Windows Server 2016服务器 . Oracle 12c安装在此服务器中(不支持11g) .

当我运行该应用程序时,我收到此错误:

无法加载文件或程序集Oracle.DataAccess

如果我将Oracle 11g dll( Oracle.DataAccess.dll )复制到应用程序的bin文件夹,我会看到以下消息:

提供与Oracle客户端版本不兼容

有没有办法在不安装Oracle 11g或更改应用程序代码的情况下运行此应用程序?

enter image description here

2 回答

  • 1

    If 我完全理解你的应用程序链接到Oracle.DataAccess.dll的11gR2 dll .

    你能检查路径中的dll版本(可能在GAC中,但并非总是如此)?

    您在Web.config的这一部分中有什么(从我的网站上取样)?这与您路径中的dll匹配吗? :

    <runtime>
        <!-- This prevents the Windows Event Log from frequently logging that HMAC1 is being used (when the other party needs it). -->
        <legacyHMACWarning enabled="0" />
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <!-- Oracle -->
            <dependentAssembly>
                <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-4.65535.65535.65535" newVersion="4.122.1.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
                <bindingRedirect oldVersion="4.0.0.0 - 4.65535.65535.65535" newVersion="4.122.1.0" />
            </dependentAssembly>
    

    上面我将驱动程序的所有版本重新映射到我服务器上安装的驱动程序 . 它通常可以正常工作,除非你主动使用只存在于“up”版本中的东西 .

    请务必检查您的DLL的版本(上面的版本是12.2驱动程序) .

  • 0

    你的意思是,“没有安装Oracle 11g ,不要理解 - 应用程序在[Server 2008 11g]上运行正常,现在你希望它在[Server 2016 12c]上运行 .

    如果事实证明我是对的并且您必须在Server 2016上安装11g,那么您可以安装Oracle客户端软件,但是 - 如果您问我 - 我宁愿安装Oracle 11g Express Edition(XE)数据库 . 原因如下:

    • 安装很简单(点击几下)

    • 只需确保将其安装到自己的Oracle Home中(即目录,与包含12c的目录不同)

    • 它不会占用太多空间

    • 设置它(在"Services"中)以手动启动(即从不),因为您实际上不需要将其用作数据库,而只需要将其用作您的应用程序所需的DLL,因此它不会占用任何资源(但是硬盘空间)

    • 它包含您可能需要的所有内容(包括实用程序,例如导出/导入和SQL * Loader,网络支持)

    • 每当我需要什么东西时,我对XE安装比安装客户端更开心(但好吧,那可能是我,不能正确使用客户端)

    如果事实证明我错了,哦,等等别人的,更好的意见 .

相关问题