Anj*_*li5 36 iis visual-studio-2010 oracle11g
我正在尝试运行此Web应用程序.我一直收到此错误"无法加载文件或程序集"Oracle.DataAccess"或其依赖项之一.尝试加载格式不正确的程序." 异常详细信息:System.BadImageFormatException."无法加载文件或程序集"Oracle.DataAccess"或其依赖项之一.尝试加载格式不正确的程序." 以下是我已经尝试过的事情.
1)用32位oracle dll替换所有oracle dll,即2.112.3.0
我在64位机器上安装了32位客户端.操作系统是Windows 7.
2)单独编译每个单独的项目.删除所有oracle依赖文件dll,然后单独添加2.112.3.0 dll,然后编译每个项目
3)使用此语句在GAC上注册32位dll gacutil/i%ORA_HOME4%\ odp.net\bin\4\Oracle.DataAccess.dll
gacutil/i%ORA_HOME4%\ asp.net\bin\4\oracle.web.dll
对于上述两个语句,我将gacutil.exe从c:\ Program Files(x86)\ Microsoft sdk\windows\v7.0A\Bin\NETFX4.0 Tools\X64复制到C:\驱动器然后
我执行了以上两个声明:
gacutil/i%ORA_HOME4%\ odp.net\bin\4\Oracle.DataAccess.dll gacutil/i%ORA_HOME4%\ asp.net\bin\4\oracle.web.dll当我执行上述两个语句时,我没有没有任何消息,我在管理员权限下在Dos窗口中执行它们.
4)我还从这个位置删除了所有临时ASP.net文件
c:\ windows\Microsoft.Net\V4.0.30319 \临时ASP.net文件我还将Web应用程序构建平台目标更改为X86,原来,它位于"ANy CPU".出于沮丧,我也尝试将平台目标更改为X64然后我收到错误消息说
"冷不加载文件或汇编.webapp"或其依赖项之一.尝试加载格式不正确的程序.
我没有在我的计算机上安装IIS,我在visual studio 2010中运行此应用程序,所以我认为它将使用visual studio附带的内置IIS.
我花了很多时间来解决这个问题,但仍然一次又一次地得到同样的错误.
任何帮助或提示将受到高度赞赏.
小智 35
试试这个:打开IIS管理器,更改应用程序池的高级设置,将启用32位应用程序更改为false.
小智 25
我找到了以下步骤的解决方案:
Oracle.DataAcces.dll引用,C:\windows\assembly\GAC\Oracle.DataAccess\X.XXX.X.XX__89b483f429c47342/oracle.dataaccess.dll希望能帮助到你
您可能需要在AppPool中启用32位应用程序.转到IIS中的"应用程序池"=>右键单击您的应用程序池=>高级设置=>'启用32位应用程序'为true.
请不要忘记重新启动应用程序池以及指向该应用程序池的相应应用程序.
如果您使用的是 IIS Express 和 VS 2017:
转到 Web 应用程序属性 > Web 选项卡 > 服务器部分 > 并将位数更改为 x64。
当我从一台机器转移到另一台机器并重新安装所有内容时,再次出现问题。就我而言,我同时使用 32 位和 64 位 Oracle ODP.NET 安装。
当列出我的新机器上的组件时,我最终得到了以下列表
C:\oracle\product\11.2.0\X64\odp.net\bin\4>gacutil /l|findstr Oracle.DataAccess
Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Policy.2.102.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Policy.2.111.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Policy.2.112.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Policy.4.112.Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64
Run Code Online (Sandbox Code Playgroud)
这里只能看到 64 位 DLL。
我无法从 web.config 中看到它,但我使用的是 32 位版本。
当用 GACutil 检查我的旧机器时,我看到了更多的 DLL,还有 X86 的。
通过重新应用注册过程修复(此处引用的 x32/x64 版本)
OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\11.2.0\x32\ODP.NET\bin\4\Oracle.DataAccess.dll
OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\11.2.0\x64\ODP.NET\bin\4\Oracle.DataAccess.dll
Run Code Online (Sandbox Code Playgroud)
之后,Visual Studio 就像一只快乐的兔子,为我重新编译了所有内容。
Oracle.DataAccess我在部署到 Azure 网站 (azurewebsites.net) 时遇到了同样的错误。对我来说,在发布到 Azure 之前,我必须在 VS.NET 2019 中编辑设置。我勾选了“对网站和项目使用 64 位版本的 IIS Express”复选框,该复选框位于Tools > Options > Projects and Solutions > Web Projects.
| 归档时间: |
|
| 查看次数: |
118084 次 |
| 最近记录: |