使用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-11-01 22:26:19

使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题的相关文章

C# 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,安装了oracle11

oracle client 连接oracle 出错:ora-12170如何解决?

问题描述 oracle client 连接oracle 出错:ora-12170如何解决? ping ip是通的,telnet ip 1521是通的,tnsping ip也是通的,就是连接的时候报:ora-12170连接超时错误,有哪位大神帮我解决下这个问题啊 解决方案 oracle client tnsnames.ora configORA-12170 TNS 连接超时 oracle 解决方案二: 首先进入sqlplus命令界面输入lsnrctl status检查监听是否启动. 如果没启就再启

Navicat for Oracle实现连接Oracle

不知道为什么,从一开始,我就不喜欢Oracle,名字好听,功能强大,但总感觉"高不可攀";或许是因为我觉得其他的数据库就可以解决数据问题,不太了解Oracle的优势:而且它长得也不好看,它的安装包界面和PLSQL Developer数据库操作软件都应该升一下级了. 还好有Navicat for Oracle,让我觉得我会爱上它,之前用过Navicat for Mysql,当时就看上了它,现在分享一下它的下载.破解及连接问题. 下载破解 去官网下载最新版本(目前是11.2.8)或其他网站

C#利用ODP.net连接Oracle数据库的操作方法_oracle

本文介绍了C#连接Oracle数据库的过程.通过instant client和ODP.net中的Oracle.DataAccess.dll,我们就可以方便的部署.net应用程序或者站点,而不需要安装Oracle客户端.接下来我们就介绍这一过程. 1. ODAC的安装 在oracle的官方网站上下载与你安装的oracle对应版本的ODAC. 下载地址:ODAC Download 下载好后解压安装,安装时不用安装全部的组件.主要安装以下组件: Oracle Instant Client Oracle

System.BadImageFormatException: 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。

        本机环境:Win7 32位,开发工具:vs2008         今天更新webservices的时候,如下图:               报出了下面的错误:                  在服务端打开asmx文件时,错误信息如下: "/"应用程序中的服务器错误. 未能加载文件或程序集"Oracle.DataAccess"或它的某一个依赖项.试图加载格式不正确的程序. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,

oracle-C# 的EF框架怎么连接Oracle数据库

问题描述 C# 的EF框架怎么连接Oracle数据库 C# 的EF框架怎么连接Oracle数据库 最好有一步步的截图教程.谢谢各位了,研究了好久都不会. 再给个单表操作的增删改查就更完美的.注意哦,是EF框架连接Oracle数据库哦. 解决方案 安装odp.net ODP.NET你不需要安装Oracle,不需要配置oracle.key文件,不需要配置TnsNames.Ora文件 不需要配置环境变量:完全的傻瓜式的在没有安装oracle数据库或者 客户端等任何oracle的产品的机器去访问Orac

.net连接oracle的3种实现方法

这篇文章介绍了.net连接oracle的3种实现方法,有需要的朋友可以才可以一下   方式1:直接利用.NET的oracle驱动连接 安装Oracle客户端驱动包 找到服务器端安装路径:E:oracleproduct10.2.0db_1NETWORKADMIN下tnsnames.ora,把该文件覆盖客户端驱动目下该文件 配置客户端驱动 1.打开数据源管理 2.选择系统DSN,点击[添加] 3.弹出的界面中选择Oracle in OraDB10g_1驱动,弹出Oracle ODBC  Driver

oracle-求vs2012怎么连接Oracle,大神们求助!!!

问题描述 求vs2012怎么连接Oracle,大神们求助!!! 20C 求vs2012怎么连接Oracle,大神们求助!!!谢谢谢谢 解决方案 http://jingyan.baidu.com/article/1876c852b9049d890b137622.html 这个是有图的教程你可以点击进去看看: 如果回答对您有帮助请采纳 解决方案二: 下个oracle driver就可以了 参考官方网站:http://www.oracle.com/technetwork/topics/dotnet/u

Windows server2008 搭建ASP接口访问连接oracle数据库全过程记录

真的是太不容易了,以前的时候在window server 2003上面搭建了一套asp+oracle的接口系统,就费了好大的劲儿,其实那会迷迷瞪瞪的也不知道怎么的就弄好了,也懒得管了.OK,从昨天到今天打算把接口从测试环境部署到公网环境上去的时候就出现了各种各样的问题,这次一定得记录一下. 先来说一下这套接口系统的整体方案: 之所用选用asp是因为属于轻量级的接口系统,只需要修改好了以后复制粘贴上去接口就立即生效,而不需要像java系的接口程序要用tomcat打包.上传.部署这样的.那这个系统就