C# oracle odp.net 32位/64位版本的问题
问题如下:
系统是win7 64位,技术 asp.net mvc 4, 数据库 oracle 11g.
由于某些原因只能使用 32的 ODP.NET ( Oracle Data Provider ),之前安装 32位的 oracle 11g client (文件名win32_11gR2_client.exe) 然后设置
iis ,将应用程序池的高级选项中的 "启用32位应用程序" 设置为true,如图
即可.
后来磁盘有点满,误删除了一些东西,网站就打不开了. 重新安装也不行,试了安装Oracle Developer Tools for Visual Studio 2013 ( http://www.oracle.com/technetwork/topics/dotnet/downloads/odacmsidownloadvs2013-2756823.html) 也不行.
又试了oracle 11 xe 还不行.郁闷...
决定卸载重装, 用自带的卸载脚本中途出错,实际上基本一点也没卸载.
考虑手动卸载,
方法如下:
1,停用 以oracle开头的服务
2, 删除注册表 打开 regedit,路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 删除该路径下的所有以oracle开始的服务名称
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\,删除该oracle目录
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\, 删除该目录
3,删除环境变量,删除path环境变量中关于Oracle的值
4,删除Oracle安装所在路径
5, 重启
--------------开始安装-------------------
重新安装win32_11gR2_client 后,发现还是不行,泪奔 ~~o(>_<)o ~~
只能用原始的办法----- 根据错误提示,一步一步解决 .
过程中遇到的错误,大致是Oracle.DataAccess.dll 版本不匹配,
解决办法 用everthing 早所有的 Oracle.DataAccess.dll文件,全部替换成ODP.NET\bin\2.x目录下的 Oracle.DataAccess.dll,并执行
gacutil /i D:\app\Administrator\product\11.2.0\client_1\ODP.NET\bin\2.x\Oracle.DataAccess.dll
发现还是不行~~o(>_<)o ~~ .
根据错误提示,找到项目下的Web.config,C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config ,C:\Windows\assembly\GAC_32\Policy.2.112.Oracle.DataAccess\2.112.3.0__89b483f429c47342\Policy.2.112.Oracle.DataAccess.config.
首先确定Web.config是没问题的,然后找machine.config 的问题,根据错误中的 publicKeyToken="89B483F429C47342" 也没发现多大问题,其实是不知道怎么改这个文件 (>﹏<) .好吧来看Policy.2.112.Oracle.DataAccess.config这个文件,
原文件是这样的
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
<bindingRedirect oldVersion="2.112.0.0-2.112.3.0" newVersion="2.112.3.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
而ODP.NET\bin\2.x目录下的 Oracle.DataAccess.dll 版本是 2.112.1.0, 问题找到了
将文件改成这样
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89B483F429C47342"/>
<bindingRedirect oldVersion="2.100.1.0-2.110.1.0" newVersion="2.112.1.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
运行网站, 大功告成!!
O(∩_∩)O哈哈~ 我好厉害,也是没谁了~~
又根据
publicKeyToken="89B483F429C47342" 搜索了下,好像修改web.config也是可以的(具体没验证),
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Oracle.DataAccess"
publicKeyToken= "89B483F429C47342"
culture= "neutral" />
<bindingRedirect
oldVersion= "2.100.1.0"
newVersion= "2.112.1.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
参考 http://blog.csdn.net/linghao00/article/details/8058730 (没有验证) 为什么用 odp.net 而不用微软自带的 Microsoft's .NET Framework Data Provider for Oracle ?下图说的清楚
另外附加一个小技巧:
直接用资源管理器(explorer)是无法访问C:\Windows\assembly下的子目录的,
但是用vs就可以,可以选择文件->打开->文件就可以查看了, 如图![]()
其它参考 http://www.cnblogs.com/yjmyzz/archive/2011/04/19/2020793.html
C# oracle odp.net 32位/64位版本的问题的更多相关文章
- [转]oracle odp.net 32位/64位版本的问题
本文转自:http://www.cnblogs.com/yjmyzz/archive/2011/04/19/2020793.html 如果你的机器上安装了odp.net,且确信machine.conf ...
- 错误: 未能完成程序集的安装(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 ...
- 在代码生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)访问Oracle数据库,实现免安装Oracle客户端,兼容32位64位Oracle驱动
由于我们开发的辅助工具Database2Sharp需要支持多种数据库,虽然我们一般使用SQLServer来开发应用较多,但是Oracle等其他数据库也是常用的数据库之一,因此也是支持使用Oracle等 ...
- dll文件32位64位检测工具以及Windows文件夹SysWow64的坑
自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...
- 最新Internet Download Manager (IDMan) 6.25 Build 20 32位 64位注册破解补丁
0x00 IDMan介绍 Internet Download Manager提升你的下载速度最多达5倍,安排下载时程,或续传一半的软件.Internet Download Manager的续传功能可以 ...
- 笔记:C语言数据类型在32位与64位机器上的字节数
读<深入理解计算机系统> 第二章 信息的表示与处理 32位与64位的典型值,单位字节 声明 32位机器 64位机器 char 1 1 short int int 4 4 long int ...
- Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)
Win7 64位系统下通过VS2015编译好的最新的OpenSSL(1.0.2j)所有八个版本的链接库, 包含以下八个版本: 1.32位.debug版LIB: 2.32位.release版LIB: 3 ...
- GCC下32位与64位机器类型变量所占字节数
GCC下32位与64位机器类型变量所占字节数 在C语言中,编译器一般根据自身硬件针对类型变量来选择合适的字节大小,下面列举一下在GCC编译器下32位机器与64位机器各个类型变量所占字节数目: C语言 ...
- dll文件32位64位检测工具以及Windows文件夹SysWow64的坑(很详细,还有自动动手编程探测dll)
阅读目录 dll文件不匹配导致数据库无法启动 究竟是System32还是SysWow64 区分dll文件32位64位的程序让我倍感迷惑 再次判断究竟是System32还是SysWow64——意想不到的 ...
- VC9、VC11、VC14、VC15库 32位 64位 免费下载
VC9.VC11.VC14.VC15库 32位 64位 免费下载 更新版本的PHP是用VC11,VC14或VC15(分别为Visual Studio 2012,2015或2017编译器)构建的,并且包 ...
随机推荐
- 关于SQL的相关笔记【长期更新,只发一帖】
场景[1]多表联查时,主表与关联表同时与同一张(第三张表)有关联,类似三角恋关系- - 涉及表: HOUSE:记录了房屋信息 ROOMS:记录了房间信息 HOUSE_STATUS:记录了状态信息的中文 ...
- 自制-随机生成不重复的数组 --算法,egret平台下的TS code
感觉这个算法经常会用到,前段时间写过一次,现在push出来.原理是有两个数组,一个数组存放随机数,然后从另一个数组提取相关的数,然后把另一个数组的大小-1,remove掉这个数,unity里也是这个原 ...
- Diffie-Hellman密钥交换算法
Diffie-Hellman密钥交换算法 之前做过的一个项目中用过DH算法(Diffie-Hellman),这种密钥交换技术的目的在于使得两个用户安全地交换一个共享密钥(shared secret)以 ...
- Echarts 饼图标题文字换行问题
var option = { title : { text: '数据来源', x:'center' }, tooltip : { trigger: 'item', formatter: "{ ...
- iOS组件化思路 <转>
随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好 ...
- [Asp.net mvc]OutputCacheAttribute
什么是Cache? 缓存在web应用中是一种以空间换去时间的技术,把频繁访问并且不经常变化的数据存储到内存中,以达到快速访问的目的.在web应用中是比较常见的优化方式. OutputCacheAttr ...
- js像素运算问题
通过DOM获取的某一距离属性(比如left)是带px单位的,直接对其算术运算不起效,要先把获取到的值处理一下去掉px单位. 方法一(用处理字符串的方式去除px): var x=document.get ...
- Ubuntu Server 12.04下部署glusterfs
1.安装环境 Linux:Ubuntuserver 12.04.1 LTS 64bit 2台 分布式文件系统:Gluster 测试环境:一台作文件服务器端(192.168.56.133),一台作客户端 ...
- rpm查询命令摘要
任务 命令 显示软件包的相关信息 rpm -q -i NAME 列出软件包中含有的所有文件 rpm -q -i NAME 列出软件包中含有的配置文件 rpm -q -c NAME 列出软件包中含有的文 ...
- KVC 和 KVO
KVC 键值编码 全称是Key-value coding,翻译成键值编码.它提供了一种使用字符串而不是访问器方法去访问一个对象实例变量的机制. 1.通过key(成员变量的名称)设置 ...