如何使用ASP.NET应用程序正确部署Oracle.DataAccess.dll

时间:2011-07-29 08:36:55

标签: asp.net oracle 64-bit web-deployment data-access

当我们首次使用我们的应用程序在64/32位Windows的不同服务器上部署Oracle.DataAccess.dll时,我们遇到了一些x64 / x86问题。现在我们已经弄清楚如何让应用程序引用正确的版本,我仍然遇到一个在部署期间妨碍的.dll文件。

情况如下:我的解决方案中有一个项目引用了Oracle.DataAccess。我将“copy local”属性设置为False,因为在服务器上,我希望应用程序使用GAC或其他文件夹中的.dll(在开发计算机上将是64位版本而不是32位)。 dll未添加到项目bin输出文件夹,但会被复制到web-app bin文件夹。当我部署到我们的测试服务器时,它使用bin文件夹中的dll而不是服务器上Oracle安装文件夹中的dll(即c:\ oracle \ odp.net \ bin \ 4)

如果bin文件夹中没有dll,我该怎么办?

2 个答案:

答案 0 :(得分:2)

请记住,它仅使用dll作为参考。当代码实际调用内部函数连接到Oracle时 - .net使用提供程序类从oracle安装目录获取Oracle客户端的用法(接口)。

话虽如此 - 在我们的应用程序中 - 我们只是根据操作系统的位级别在bin文件夹中部署正确的版本。我们必须这样做,因为我们的应用程序同时支持Oracle和Sql - 如果dll不在那里,引用将会破坏我们的Sql客户端。

答案 1 :(得分:1)

我们发现此问题的一个原因是您的Web项目不直接引用Oracle.DataAccess.dll,但 引用另一个引用它的项目。即使在引用的项目中Copy Local为false,也会发生这种情况。

我们发现的解决方案是将引用直接添加到您的Web项目中,然后将其对Copy Local的引用设置为false。