如何使ODP.NET 4.0(64位)在64位机器Windows 7上运行?

时间:2011-06-07 22:09:11

标签: asp.net windows odp.net

我使用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。

所以,如果你能帮我找到一个非常感谢的答案。请帮我解决上述错误。

2 个答案:

答案 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位,它应该可以工作。