错误:
未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项.试图加载格式不正确的程序。
日志: 此绑定从 default 加载上下文开始。 日志: 正在使用应用程序配置文件: D:\xx\xx\040.xx\xx\xx.xx.Web\web.config 日志: 使用主机配置文件: C:\Users\x'x\Documents\IISExpress\config\aspnet.configxx 日志: 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的计算机配置文件。 日志: 此时没有为引用应用策略(私有、自定义、分部或基于位置的程序集绑定)。 日志: 尝试下载新的 URL file:///C:/Users/xx/AppData/Local/Temp/Temporary ASP.NET Files/vs/a6cf241f/11254f05/Oracle.DataAccess.DLL。 日志: 尝试下载新的 URL file:///C:/Users/xx/AppData/Local/Temp/Temporary ASP.NET Files/vs/a6cf241f/11254f05/Oracle.DataAccess/Oracle.DataAccess.DLL。 日志: 尝试下载新的 URL file:///D:/xx/xx/xx/xx/xx.Web/bin/Oracle.DataAccess.DLL。
未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项.试图加载格式不正确的程序
1.我安装的是64位ODAC.NET,没安装前,Web可正常运行,Winform无法运行
2.winForm程序和Web项目调用同一个类库,这个类库中有读取Oracle的库
4.winForm是可以正常运行的,Web报此错误
5.在bin里面删除Oracle.DataAccess.dll后程序正常运行
6.发布到IIS上程序正常运行,IIS上未启用32位应用程序可正常运行
可考虑的地方:
1.Web项目,用VS启动调试,IIS默认是在32位
2.本机装的Oracle为64为Oracle
3.系统为64位系统
4.trns.org
您的web项目开发设置的platform target是x86还是x64
设置的 Any CPU,刚才试了试X86不报错了。之前记得试过也报错的,现在不报错了。那目标平台为什么选X86不是X64呢?我明明装的都是64位的软件
而且,选择X86后,生成的bin文件里面没有Oracle.DataAccess.dll这个文件了
你这就是缺少引用的DLL,去网上下载一个odp_net_client_dll包,把里面的几个文件放到项目下就可以了
Oracle.DataAccess 分64位和32位,你如果生成的是web项目any cpu,默认是集成的ODP.NET(默认是64位),则需要开启IIS的支持64位
反之,则是启用32位支持,将程序改为x86编译即可
更简单的解决办法是启用新的ODP.NET 托管式DLL,无需再考虑32还是64,直接就能用,就1个DLL