日期:2014-05-17  浏览次数:21848 次

未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0
服务器环境:IIS服务器
未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342”或它的某一个依赖项。试图加载格式不正确的程序

Could not load file or assembly 'Oracle.DataAccess, Version=2.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

配置了
<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>
还是有这个错误,请大家帮帮忙啊。

------解决方案--------------------
http://blog.csdn.net/linghao00/article/details/8058730
------解决方案--------------------
你的在服务器上安装Oracle Data Provider for .NET
http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
注意版本和64bit,32bit.
------解决方案--------------------
服务器是64位还是32位的,IIS配置的是64位的还是32位的,Oracle客户端安装的是64位的还是32位的?
3个问题你自己去检查下,一般情况下,IIS和服务器的位数一致,但也可以改到不同,而Oracle客户端必须和 IIS的位数一致。
------解决方案--------------------
通过命令注册IIS可以改变其位数:
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
这里面的aspnet_regiis.exe有两种版本,分别位于32位和64位目录下面,我因为操作系统是32位的,不存在64位目录。

你安装的Oracle是否为11g的那个版本号2.112.1.0是11g的64位Oracle 的版本号,如果不是11g的Oracle客户端,肯定是找不到的了。你也可以到安装目录下面去找ODP.NET的目录,下面有.NET要使用的DLL文件,确认其版本号。
------解决方案--------------------
你的 Oracle.DataAccess 有可能是32位的, 需要在IIS在把32位模式打开。
------解决方案--------------------
报这个错不一定真是你缺少 ODA 的引用 , 如果缺少引用 ,项目编译都会报错. 设置一下你的IIS,在应用程序池里面: