C#用Oracle.DataAccess中连接Oracle要注意版本问题!转)

一般人,不包括全部平时在开发中使用的都是32位的PC机,所以安装的也是Oracle32位的客户端。但是一般服务器都是64位的,安装的也是 64位的Oracle客户端,如果要部署使用Oracle.DataAccess连接Oracle的应用程序时,可能会遇到版本上的问题。那具体来说表现在以下两个方面:
主要版本问题有两种,一种是32位版和64位版的问题,如果我们开发出来的应用是32位的,那么就必须使用32位的客户端,如果是64位的应用程序当然对应64位的客户端。这里需要注意:在64位的环境中使用VS开发Web程序,其运行的Web服务“WebDev.WebServer.exe”是32位的,所以如果要调试64位的Oracle连接程序,最好是部署到iis中,使用IIS来连接Oracle数据库。
另一个版本问题是Oracle.DataAccess的版本号问题,我的本机就是32位的XP,安装了Oracle11gR2客户端后,在安装目录下的 ODP.NET\bin\2.x目录中可以找到Oracle.DataAccess.dll文件,可以看到其版本号是:2.112.1.2。所以我开发出来的程序,引用的也是这个版本的库。

但是在64位下的Oracle.DataAccess.dll却不一样,安装后的版本是2.112.1.0,如图是Windows2008X64上的Oracle.DataAccess.dll。

现在把开发环境的程序发布部署到服务器上,就会抛出异常
未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一个依赖项。
或者是
Could not load file or assembly ‘Oracle.DataAccess, Version=2.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342‘ or one of its dependencies. An attempt was made to load a program with an incorrect format之类的话。
总之就是找不到对应的程序集。显然,这里系统找的是2.112.1.2版本的Oracle.DataAccess,而服务器上只有2.112.1.0版本的,所以才报错,解决办法就是在web.config中修改,在configSections节点结束之后增加如下内容:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess"
publicKeyToken= "89B483F429C47342"
culture= "neutral" />
<bindingRedirect
oldVersion= "2.112.1.2"
newVersion= "2.112.1.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
这样就可以让IIS调用2.112.1.0的Oracle.DataAccess了。添加这个配置后便可正常运行。

时间: 2024-10-12 13:58:35

C#用Oracle.DataAccess中连接Oracle要注意版本问题!转)的相关文章

C#用Oracle.DataAccess中连接Oracle要注意版本问题!

客户端Oracle.DataAccess.dll与服务器版本不一致时,如下修改:1.在客户端Web.config中,增加如下配置:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Oracle.DataAccess" publicKeyToken=&q

在Visual Studio 2017中,.NET(C#)通过Oracle.ManagedDataAccess来连接Oracle数据库

C#如何通过Oracle.ManagedDataAccess来连接Oracle数据库 1.先创建一个项目,鼠标右击项目中的引用,再点击管理NuGet程序包(也可以先下载dll文件,再选添加引用),在搜索栏中输入oracle查找,选择名为Oracle.ManagedDataAccess的安装. 2.引入Oracle.ManagedDataAccess.Client空间 3.数据库的连接字符串: User ID:用户名 Password:用户密码 Data Source:请看下面的截图 OK,到此在

PL/SQL(x64)借助Oracle Instant Client连接Oracle配置教程

PL/SQL在Windows x64位操作系统下安装配置稍显复杂,为了方便Oracle库友使用这个便利的工具,先提供PL/SQL借助Oracle Instant Client(该文件比Oracle Client文件小很多,可为用户节省安装时间)连接数据库配置教程一份,有需要的盆友请拿走. 1.  下载Oracle Instanct Client(Oracle即时客户端) 登录Oracle官方网站,下载Oralce即时客户端.你能够看到不同系统的客户端,根据自己的需要选择对应的版本,下载完毕后,解

【Robotframework连接oracle】robot连接oracle数据库

1.下载databaselibrary 2.安装一个oracle的支持库:cx_Oracle windows下可以下载.exe来安装,这个库的下载地址是:https://pypi.python.org/pypi/cx_Oraclehttps://pypi.python.org/pypi/cx_Oracle 下载的库的位数要和Python位数一致,我这里下载的64位的,(cx_Oracle-5.1.2-py2.7.egg-info),cx_Oracle版本是11g,下载完成后直接安装 3.dll

oracle 11g 中 (oracle 10g) crsctl 的 替换命令

 oracle 11g 中 (oracle 10g) crsctl 的 替换命令 Deprecated Command Replacement Commands crs_stat  ---集群状态检查 crsctl check cluster -all crsctl stat res -t crs_register  --集群资源注冊 crsctl add resource crsctl add type crsctl modify resource crsctl modify type c

在C#中,不安装Oracle客户端如何连接Oracle数据库

本方法优点: 1.程序内集成Oracle客户端,无需用户自行进行配置 本方法缺点: 2.增加程序包的体积(Oracle instant client本身有几十兆大小) 下面说一下如何实现. 0.首先,从Oracle网站上下载对应版本的Oracle instant client包,网址在这里 http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 由于是Windows程序,只需要下载W

VS建立的Winform程序中连接Oracle数据库能正常运行在Web中却不能正常连接运行可能原因(本文来自博客园深蓝居)

我们平时使用的都是32位的机器进行开发,装的都是32位的软件,但是我们的服务器一般都是64位的,所以有时也需要在64位的环境下装一个VS调试程序.最近遇到的一个问题就是一个同事换了一个电脑,用的是X64的Windows 2008作为操作系统,要进行Oracle的数据库连接,所以也装了64位的Oracle客户端.如果是控制应用项目或者WinForm项目可以正常连接Oracle,但是Web项目在程序中打开Oracle连接时,系统抛出了异常: 尝试加载 Oracle 客户端库时引发 BadImageF

Jmeter中连接Oracle报错Cannot create PoolableConnectionFactory

填坑贴,之前一直用jmeter2.13版本进行oracle测试,今天改为3.2版本,发现按照以往的方法执行测试,JDBC Request结果始终报错:Cannot create PoolableConnectionFactory (ORA-00923: δ??????? FROM ?????),翻了一下帖子,也没有比较好的解决方法,后来翻看了一下帮助文档发现2.13和3.2对JDBC Connection Configuration参数配置描述上有一些变化,如下图所示: 2.13版本帮助文档描述

杂记1:不安装Oracle客户端远程连接Oracle的方法

方案是使用Oracle Instant Client: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 步骤一: 到Oracle官方网站下载对应的Instant Client版本,下载basic版本即可,比如我下载的是: instantclient-basic-win32-10.2.0.4.zip 建议再下载sqlplus,以便配置结束后进行测试: instantclient