我使用Oracle提供的XCopy 11.2为64位计算机安装了Oracle客户端(按照我自己的说明安装了所有内容)。
我正在使用Visual Studio 2010,该项目是ASP.NET网站类型。
当我尝试使用上面安装的Oracle Connection执行我的ASP.NET网站时..在编译期间,我从web.config文件中给出了错误。
**
“无法加载文件或程序集 'Oracle.DataAccess,版本= 4.112.2.0, 文化=中性, PublicKeyToken = 89b483f429c47342'或 其中一个依赖项。系统 找不到指定的文件“
**
如果我在IIS应用程序池中将“启用32位应用程序”的值更改为“True”,则会有效。
但我的要求是让它在64位ODP.NET连接器的64位机器上工作,所以我不想将启用32位应用程序的值更改为True。
所以,如果你能帮我找到一个非常感谢的答案。请帮我解决上述错误。
答案 0 :(得分:4)
处理此问题的最佳可能性是在带有IIS的服务器上本地使用x86版本的Visual Studio和x64版本。 为此,您必须下载这两个版本 - 在lib \ x86文件夹中复制一个,在lib \ x64中复制另一个版本 在此之后你必须修改项目文件 - visual studio支持条件引用。将以下部分添加到项目文件中:
<PropertyGroup>
<ReferencesPath Condition=" '$(Platform)' == 'x86' ">..\Lib\x86</ReferencesPath>
<ReferencesPath Condition=" '$(Platform)' == 'x64' ">..\Lib\x64</ReferencesPath>
</PropertyGroup>
在此参考之后,odp.net可能会像这样:
<Reference ... processorArchitecture=$(Platform)">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(ReferencesPath)\Oracle.DataAccess.dll</HintPath>
<Private>True</Private>
</Reference>
这样,当您可以在本地构建x86并在服务器x64上构建时,将始终引用正确版本的Oracle.DataAccess.dll。
或者,如果您只想使用x64版本而不是必须坚持使用IIS,即使您在本地工作,也可以尝试在x64模式下运行Cassini的开源版本(http://cassinidev.codeplex.com)
对我来说,最好的可能是参考上面描述的两个版本 - 这对我团队中的每个人来说都很好。现在已经很好了。
答案 1 :(得分:1)
您必须安装64-bit Oracle Data Access Components (ODAC),因为Oracle客户端安装未将Oracle.DataAccess.dll注册到程序集中。
如果你的oracle数据访问安装没问题,那么在你的应用程序池设置中取消选中“启用32位应用程序”后,一切都会正常工作。
如果您仍然遇到相同的错误,则可能是您的网站bin文件夹中有32位dll。只需删除它,网站将使用程序集中的64位,它应该可以工作。