无法加载文件或程序集 Oracle.DataAccess。

31

我有一个asp.net mvc(EF)项目, 当我将项目移动到Windows Server 2008时,我在我的电脑上下载了版本为4.112.2.50-32位的Oracle数据提供程序(我有odp-64bit的相同版本),遇到以下问题:

无法加载文件或程序集“Oracle.DataAccess”或其某个依赖项。尝试加载格式不正确的程序

当我从服务器中获取“Oracle.DataAccess.dll”并将其作为我的项目引用时,我遇到了另一个错误信息,类似于上述情况,只不过出现的是“Oracle.Web”文件。

无法加载文件或程序集“Oracle.Web”或其某个依赖项。尝试加载格式不正确的程序

如果我将“Oracle.Web.dll”文件从服务器添加到我的项目引用中,也会出现与“Oracle.Web”相同的错误。


1
请查看https://dev59.com/-F7Va4cB1Zd3GeqPI1vq#8531874中提到的要点。很可能是32/64位问题。 - Codo
6个回答

59
IIS 管理器中,选择服务器并选择 "应用程序池"。选择你的 Web 应用程序所使用的应用程序池,然后从右侧菜单中单击 "高级设置"。
在高级设置的 "常规部分" 中,单击 "启用 32 位应用程序" 并将其设置为 True
此修复仅适用于尝试执行 Oracle Dlls 的 32 位版本的 64 位服务器。
问候 George

6

乔治写道:

在IIS管理器中选择您的服务器,然后选择“应用程序池”。选择您的Web应用程序使用的应用程序池,然后从右侧菜单中单击“高级设置”。

在高级设置的“常规”部分中,单击“启用32位应用程序”,将其设置为True。

此修复仅适用于尝试执行Oracle Dll的32位版本的64位服务器。

相反的情况也是如此。如果您正在使用Oracle Dll的64位版本,则必须将“启用32位应用程序”设置为false

——Jacob


你是我的网络<3 - masterwok

4
  1. Oracle.DataAccess.dll 必须安装,而不仅仅是被引用。
  2. 将引用的“复制本地”属性改为 true。

Oracle.DataAccess.dll已安装,同时我还更改了所有参考的本地副本。 - user975260

1

不正确的格式表示位数问题。要使服务器运行,请将您的程序运行的应用程序池更改为启用32位支持,或安装64位Oracle客户端。


0

将应用程序池从64位更改为32位是一种解决方案。


0

删除 binobj 文件夹解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接