使用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了。添加这个配置后便可正常运行。
使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题的更多相关文章
- System.TypeInitializationException: The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. ---> Oracle.DataAccess.Client.OracleException: 提供程序与此版本的 Oracle 客户机不兼容”
.net应用程序通过Oracle.DataAccess.dll访问64位的Oracle服务器,在连接时出现以下异常:“System.TypeInitializationException: The t ...
- [转]使用Navicat for Oracle工具连接oracle的
使用Navicat for Oracle工具连接oracle的 这是一款oracle的客户端的图形化管理和开发工具,对于许多的数据库都有支持.之前用过 Navicat for sqlserver,感觉 ...
- 使用Navicat for Oracle工具连接oracle
使用Navicat for Oracle工具连接oracle的 这是一款oracle的客户端的图形化管理和开发工具,对于许多的数据库都有支持.之前用过 Navicat for sqlserver,感觉 ...
- 无需安装Oracle Client连接Oracle数据库
介绍 当我们采用 ODP.NET 检索Oracle 数据库的时候,Oracle客户端是必须安装.假如当时电脑上没有安装Oracle客户端,就不能这么用了,这时候Oracle.ManagedDataAc ...
- Navicat for Oracle实现连接Oracle
不知道为什么,从一开始,我就不喜欢Oracle,名字好听,功能强大,但总感觉"高不可攀";或许是因为我觉得其他的数据库就可以解决数据问题,不太了解Oracle的优势:而且它长得也不 ...
- 使用Navicat for Oracle工具连接oracle的图文教程
点评:今天上网的时候偶然发现了一款oracle的客户端的图形化管理和开发工具,当看到这个界面的时候,感觉很舒服,便上网搜了一下这个工具,看百度百科之后感觉很出乎我的意料,这个产品对于许多的数据库竟都有 ...
- 使用Navicat for Oracle工具连接oracle出错:ORA-12737
今天上网的时候偶然发现了一款oracle的客户端的图形化管理和开发工具,当看到这个界面的时候,感觉很舒服,便上网搜了一下这个工具,看百度百科之后感觉很出乎我的意料,这个产品对于许多的数据库竟都有支持, ...
- C#用Oracle.DataAccess中连接Oracle要注意版本问题!转)
一般人,不包括全部平时在开发中使用的都是32位的PC机,所以安装的也是Oracle32位的客户端.但是一般服务器都是64位的,安装的也是 64位的Oracle客户端,如果要部署使用Oracle.Dat ...
- 错误: 未能完成程序集的安装(hr = 0x8007000b),.net程序关于使用Oracle.DataAccess.dll不同版本x86和x64问题,即oracle odp.net 32位/64位版本的问题
如果你的机器上安装了odp.net,且确信machine.config也有类似以下结节:(64位+.net 4.0环境下,machine.config可能会有4份,分别对应于.net2.0/4.0的3 ...
随机推荐
- 《DSP using MATLAB》示例Example7.24
代码: ws1 = 0.2*pi; wp1 = 0.35*pi; wp2 = 0.65*pi; ws2 = 0.8*pi; Rp = 1.0; As = 60; [delta1, delta2] = ...
- Robotframework第1课--安装RF
大家好,我是孟船长,现从事自动化测试的工作,工作用的工具就是Robotframework,现在把这“几年”的所得分享出来,希望新进入这行的朋友能够少吃点“新人苦”,能够早点入手robot framew ...
- PAT 1006 换个格式输出 C语言
让我们用字母B来表示“百”.字母S表示“十”,用“12...n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数.例如234应该被输出为BBSSS1234,因为它有2个“百”. ...
- 错误:Authentication with old password no longer supported, use 4.1 style passwords.
今天重新装了系统,mysql connector 使用了官网的最新版本(6.8.3). 启动项目出现标题中的错误.原因大家谷歌. 解决方法,使用低版本的 connector. 我使用的是 6.5.6 ...
- tomcat日志分类
综合:Tomcat下相关的日志文件 Cataline引擎的日志文件,文件名catalina.日期.log Tomcat下内部代码丢出的日志,文件名localhost.日期.log(jsp页面内部错误的 ...
- Linux proc_mkdir和proc_create的用法
//功能:在proc中创建一个文件夹 //参数1:创建的文件夹名称 //参数2:创建的文件夹路径,就是在哪个文件夹中创建,如果是proc根目录,此参数为NULL //返回值:创建的文件夹路径 stru ...
- Metaweblog博客分发体验
在8月份OpenLiveWriter 这篇文章使用博客客户端撰写做了metaweblog的个人服务,支持通过OpenLiveWriter发博客到本站(OurJS),然后再分发到其他博客平台(目前就os ...
- 安装MySQL-python 的问题
安装MySQL-python 的问题 1.CentOS下载mysql-devel安装 yum install mysql-devel 2.Ubuntu下不叫mysql-devel,而是叫libmysq ...
- java代码----substring()方法是按索引截取字符串。。。下标0开始
总结:按照索引substring(2,5);意思是从字符串的索引为2开始(包括)到第6个字符(不包括)的位置的截取部分 package com.s.x; //substring public clas ...
- EasyUI 左,右(上、下)布局
左,右(上.下)布局 <body class="easyui-layout"> <div data-options="region:'west',col ...