求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项

时间:2022-01-15 15:52:04
开发环境是VS2012, WIN7 64位,ODP.NET 64位


string ss = "data source=eaimng;user id=eaimng;password=eaimng"; 
PetaPoco.Database db = new PetaPoco.Database(ss, "Oracle.DataAccess.Client");

db.OpenSharedConnection();


同样一段代码, 同样的开发环境 , 在WinForm上面Ok, 在WebForm, MVC4编译没问题,运行时就出现:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项 。

在bin目录中有:Oracle.DataAccess.dll

确认在 machine.config中有 :
<section name="oracle.dataaccess.client" ....
和:
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client"...

高手们, 大神们。。。。帮忙看看吧。。。我实在不行了。。。

14 个解决方案

#1


需要运行在32位模式

#2


引用 1 楼 wszhoho 的回复:
需要运行在32位模式


意思是必须把“目标平台”设置为 X86 ?? 
这样倒是跑起来了, 但是一但程序需要连接数据库时,这句话就会抛异常:
_factory = DbProviderFactories.GetFactory(_providerName);  
找不到请求的 .Net Framework Data Provider。可能没有安装。

可能是因为安装的ODP是64位的。。。。

#3


Oracle.DataAccess 这就是个32为的dll,除非自己写个,否则,所有的一切,都要用32位模式运行,你试试好了,我之前碰到类似的问题,当然不是数据库问题,结果后来找了其他组件替代掉了。

#4


我发现VS 启动的IIS EXPRESS是32位的。。我去~。。与这个有关系么?

#5


引用 3 楼 wszhoho 的回复:
Oracle.DataAccess 这就是个32为的dll,除非自己写个,否则,所有的一切,都要用32位模式运行,你试试好了,我之前碰到类似的问题,当然不是数据库问题,结果后来找了其他组件替代掉了。


我可以确定我安装的是64位的ODP.NET, 并且 Oracle.DataAccess.dll是64位的:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC>corflags E:\app\hy\produc
t\11.2.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll
Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  4.0.30319.17929

Copyright (c) Microsoft Corporation.  All rights reserved.

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32+
CorFlags  : 0x9
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 0
Signed    : 1

PE: 32+ 可以确定他是64位的文件。

#6


问题解决了, 就是因为VS 启动的是32位的 IIS EXPRESS, 并且好像暂时没找到让VS 启动64位 IIS EXPRESS的办法。。所以目前我的解决方式是:
1.安装 IIS
2.在项目属性-> Web 选项中,服务器选择 选择使用IIS WEB 服务器。。因为IIS是64位

散分。。

#7


jf 求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项

#8


求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项
接分 、如图所示 是这样弄的 吗?

#9


引用 6 楼 hyblusea 的回复:
问题解决了, 就是因为VS 启动的是32位的 IIS EXPRESS, 并且好像暂时没找到让VS 启动64位 IIS EXPRESS的办法。。所以目前我的解决方式是:
1.安装 IIS
2.在项目属性-> Web 选项中,服务器选择 选择使用IIS WEB 服务器。。因为IIS是64位

散分。。

接分接分

#10


引用 8 楼 kongwei521 的回复:
接分 、如图所示 是这样弄的 吗?


不是, 您这样的设置是因为ORACLE CLIENT 或者ODP.NET 是32位, IIS需要加载32位库文件, 这一项需要选择为True, 而我遇到的是32位的 IIS EXPRESS没办法调用64位ODP.NET

#11


所以最后我放弃了使用 IIS EXPRESS, 而直接使用了IIS。

#12


真正运行环境估计不适合用EXPRESS版本吧,顺便接分来的 求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项

#13


检查你的vs上显示的Debug下拉选单里的“配置管理器”。

#14


求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项

#1


需要运行在32位模式

#2


引用 1 楼 wszhoho 的回复:
需要运行在32位模式


意思是必须把“目标平台”设置为 X86 ?? 
这样倒是跑起来了, 但是一但程序需要连接数据库时,这句话就会抛异常:
_factory = DbProviderFactories.GetFactory(_providerName);  
找不到请求的 .Net Framework Data Provider。可能没有安装。

可能是因为安装的ODP是64位的。。。。

#3


Oracle.DataAccess 这就是个32为的dll,除非自己写个,否则,所有的一切,都要用32位模式运行,你试试好了,我之前碰到类似的问题,当然不是数据库问题,结果后来找了其他组件替代掉了。

#4


我发现VS 启动的IIS EXPRESS是32位的。。我去~。。与这个有关系么?

#5


引用 3 楼 wszhoho 的回复:
Oracle.DataAccess 这就是个32为的dll,除非自己写个,否则,所有的一切,都要用32位模式运行,你试试好了,我之前碰到类似的问题,当然不是数据库问题,结果后来找了其他组件替代掉了。


我可以确定我安装的是64位的ODP.NET, 并且 Oracle.DataAccess.dll是64位的:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC>corflags E:\app\hy\produc
t\11.2.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll
Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  4.0.30319.17929

Copyright (c) Microsoft Corporation.  All rights reserved.

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32+
CorFlags  : 0x9
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 0
Signed    : 1

PE: 32+ 可以确定他是64位的文件。

#6


问题解决了, 就是因为VS 启动的是32位的 IIS EXPRESS, 并且好像暂时没找到让VS 启动64位 IIS EXPRESS的办法。。所以目前我的解决方式是:
1.安装 IIS
2.在项目属性-> Web 选项中,服务器选择 选择使用IIS WEB 服务器。。因为IIS是64位

散分。。

#7


jf 求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项

#8


求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项
接分 、如图所示 是这样弄的 吗?

#9


引用 6 楼 hyblusea 的回复:
问题解决了, 就是因为VS 启动的是32位的 IIS EXPRESS, 并且好像暂时没找到让VS 启动64位 IIS EXPRESS的办法。。所以目前我的解决方式是:
1.安装 IIS
2.在项目属性-> Web 选项中,服务器选择 选择使用IIS WEB 服务器。。因为IIS是64位

散分。。

接分接分

#10


引用 8 楼 kongwei521 的回复:
接分 、如图所示 是这样弄的 吗?


不是, 您这样的设置是因为ORACLE CLIENT 或者ODP.NET 是32位, IIS需要加载32位库文件, 这一项需要选择为True, 而我遇到的是32位的 IIS EXPRESS没办法调用64位ODP.NET

#11


所以最后我放弃了使用 IIS EXPRESS, 而直接使用了IIS。

#12


真正运行环境估计不适合用EXPRESS版本吧,顺便接分来的 求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项

#13


检查你的vs上显示的Debug下拉选单里的“配置管理器”。

#14


求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项求助, 每次玩ASP都会遇到一些恶心的问题, 这次是:未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项