我有一个ASP.NET Web表单应用程序,我正在win7本地计算机上构建和运行.NET 4.0。 (本地框上都可以。)我的应用程序正在针对Oracle DB运行EF4.1,因此我使用的是Oracle EF数据提供商,该提供商仍在Beta中。

现在,我可以使用本地VS2010部署Web将应用程序成功地部署到我的Win2008服务器目标计算机上,但是当我在目标上运行该应用程序时,我会得到经典 Unable to find the requested .Net Framework Data Provider 错误。

这是我的 (不成功) 设置,截至目前:

  • 32位应用程序 已启用 在WIN2008服务器目标的App池(.NET 4.0)中。

  • 复制本地 被设定为 真的 为了 Oracle.DataAccess 我本地VS2010解决方案中的DLL。

  • 两个都平台 平台目标 设置设置为 任何CPU 在我本地的构建配置中。 (我在这里尝试了不同的设置而没有成功。)

  • WIN2008服务器目标确实 不是 有一个 Oracle.DataAccess DLL在GAC中。 (我认为在Oracle DLL上设置本地副本将意味着我不需要GAC。)

编辑: :我试图加入 Oracle.DataAccess dll,但我得到了与讨论的相同错误 这里. 。 (我仍然必须调查此问题。)此外,我的目标框上已经还有另一个Oracle客户端,并且安装Oracle EF数据提供商随附的Oracle客户端似乎会干扰它。这不能允许发生。

问题1: :构建配置设置(在本地框上)和IIS设置(在目标上)的哪种组合我需要选择以便能够在2008服务器上运行我的应用程序?

问题2: :如何在不安装目标服务器上安装另一个Oracle客户端的情况下工作?

再次感谢您的帮助。

更新:所有人都在工作. 。有关完整解决方案的链接以及有用信息的链接,请参见下面的答案。

有帮助吗?

解决方案 2

GTG的解决方案至少提供了我问题1的答案的一部分,因此我正在为他的解决方案提供投票。对于对我的问题2感兴趣的任何其他人(如何执行不引人注目的ODAC安装),可以找到答案 这里. 。 (寻找Anthonyvo的答案,因为它封装了所有必要的信息。)

我应该提到,我还没有能够为我提供不可思议的解决方案,但是许多解决方案是我需要实施的解决方案。

更新: 案件关闭。我错过了Oracle DLL。显示我的完整设置 这里.

其他提示

由于您的服务器在GAC中没有oracle.dataaccess,因此表明您尚未在该机器上安装Oracle客户端,并且试图通过部署oracle.dataaccess.dll作为应用程序的一部分来使其正常工作。

我不太确定服务器上需要安装什么。我通常只是在服务器上运行Oracle设置,以确保安装所有必要的Oracle文件和设置。如果这样做,则无需与应用程序一起部署oracle.dataaccess.dll,它将已经在服务器的GAC中。

我知道的一件事是一个配置设置,该配置设置告诉系统如何创建提供商的新实例。您可以尝试将该设置添加到您的web.config,并尝试如果足够的话,但是再次,您可能需要很多依赖的DLL和设置,您需要使用Oracle提供商工作。

设置为(这是针对ODP.NET的另一个版本,您将在您自己的计算机上找到正确的设置):

<system.data>
  <DbProviderFactories>
     <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client"
          description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top