Windows64位环境下 net访问Oracle解决方案 目前,Windows操作系统可以分成两类,32位和64位(64位也区分x86_64位和 ),同时 Oracle客户端也做了同样的区分。 在安装和开发的过程中,经常会遇到一些问题,本文就总结了相关的解决
方案 Oracle Instant Client的下载地址 以下所有的说明都是基于Windows64位的(以Windows2008为例) 1 解决方案(这是最终步骤,其他供参考) 1 安装Oracle64位客户端(win64_11gR2_client): 下载页面: 下载地址: 已经下载到\\192.168.9.24\
常用软件\Oracle\win64_11gR2_client.zip
然后正常安装,并进行数据库连接的配置,比如tnsnames.ora
2 将NetWork Service用户加入Administraotr组中,重启
计算机(重要) 3 新建asp.net网站,配置程序的调试模式为使用IIS,不要使用WebServer,这样就可以调试了 4 由于Webserver是32位的程序, 因此如果要使用
webserver进行调试, 可以考虑安装32位的Oracle 客户端(没有进行测试)。 注意:对于已经安装了32位Oracle客户端的情况,本次没有测试 2安装顺序 安装Oracle 11g Release 2 ODAC 11.2.0.1.2 with Oracle Developer Tools for Visual Studio, 配置服务器tnsnames,使用SQLPLUS测试成功连接。 启动IIS,发布.NET连接ORACLE的应用,测试,报"System.Data.OracleClient 需要Oracle 客户 端软件8.1.7 或更高版本"错误。解决:将ORACLE安装目录为Network Service用户赋读和执行权, 并传递到所有子目录。
重启动
IIS,报“尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行, 将出现此问题。 ”解决: 下载并解压instantclient_11_2 的X64版本,放到ORACLE安装目录下,并在PATH路径中
搜索在前。 重启动IIS,报“ORA-12154: TNS:could not resolve the connect identifier specified”错误。解决: 指定环境变量TNS_ADMIN到tnsnames.ora所在目录。 重启动IIS,.
NET应用连接数据库服务器成功。
3 在asp.net中,不用使用Webdev进行调试,必须使用IIS调试 我们平时使用的都是32位的机器进行开发, 装的都是32位的
软件, 但是我们的服务器一般都是64位的, 所以有时也需要在 64位的环境下装一个VS调试程序。 最近遇到的一个问题就是一个同事换了一个电脑, 用的是X64的Windows 2008作为操作系统, 要进行Oracle的数据库连接, 所以也装了64位的Oracle 客户端。如果是控制应用项目或者WinForm项目可以正常连接 Oracle,但是Web项目在程序中打开 Oracle连接时,系统抛出了异常: 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端 组件的情况下以 64 位模式运行,将出现此问题。 显然,这个提示的不正确,因为我们装的就是64位的客户端,所以并不存在64位程序调用32位客户端 的情况。难道是生成的程序是32位的,然后32位调用了64位的客户端,于是我把程序属性中的生成平 台改为X64,如图所示:
结果这样生成的WebService
程序在调用时还是报同样的异常。这个问题困扰了我一天,其中想到的解决 办法就是把 64位的客户端卸载了,在X64的操作系统中安装32位的客户端,然后这样就可以了,但是 如果不是Web应用(比如控制台应用程序或者WinForm程 序)却同样报错,那就需要将非Web应用 的项目按照上图的设置方法,将生成的平台改为X86才能正常运行。 解决办法: 这当然是一个折中的办法,今天终于发现了真正的原因,原来VS在建Web项目时,平时运行使用的是自 带的 WebDev.WebServier是一个32位的服务, 所以在其中运行的Web项目不管怎么设置平台, 都只 能作为32位的应用来看待,所以在Web项目 运行时连接64位的Oracle客户端会报错,而非Web项 目就不会。 网上