【问题标题】:How can I get Oracle ODP to work with ASP.NET MVC?如何让 Oracle ODP 与 ASP.NET MVC 一起使用?
【发布时间】:2013-12-06 00:30:35
【问题描述】:

我已经尝试了几个小时来尝试让 Oracle 11g ODP 驱动程序与带有 .NET Framework 4.0 的 ASP.NET MVC 3 一起使用。我的解决方案中的所有项目都设置为 AnyCPU 和 .NET Framework 4.0。我有一组能够使用驱动程序的 NUNIT 集成测试,并且运行良好。但是我无法让我的 MVC Web 项目与 ODP 驱动程序一起使用。

当我尝试运行 Web 项目并调用 TestConnection 时,我在 64 位机器上的 Visual Studio 2010 开发环境中收到此错误:

无法加载文件或程序集“Oracle.DataAccess”或其依赖项之一。试图加载格式不正确的程序。

我在 64 位开发服务器上收到此错误:

无法找到请求的 .Net Framework 数据提供程序。它可能没有安装。

这是我在网络配置中的连接字符串:

<add name ="POMSNETDatabase" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myHost)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=myService)));User Id=xxxx;Password=yyyy;" />

这是我的连接代码:

public class Repository
{
    public void TestConnection()
    {
        OracleConnection myConnection = new OracleConnection(ConfigurationManager.ConnectionStrings["POMSNETDatabase"].ToString());
        myConnection.Open();
    }
}

我已验证我的 bin 目录中同时具有 Oracle.DataAccess.dll 和 OraOps11w.dll。

【问题讨论】:

  • 您是否在开发服务器上安装了 ODP?

标签: c# asp.net-mvc-3 oracle11g


【解决方案1】:

一些让它工作的可能性:

  1. 如果Oracle.DataAccess 标记为复制本地,请检查引用是否。
  2. 以 32 位编译您的主应用程序。 (网络项目)。
  3. 在 IIS 上,配置以 32 位执行的应用程序池。
  4. 在 IIS 上,将应用程序池配置为使用 Local System 执行。

我在使用 Odp 提供程序时遇到了一些问题,它不能在 64 位服务器中执行,我必须在应用程序池中使用 32 位来应用它。

【讨论】:

  • 好的,问题是我使用的是 Visual Studio 2010。虽然单元测试在 32/64 位模式下执行,但 Casini 仅在 32 位模式下执行。您可以将cassinidev.codeplex.com 编译为 64 位,它可以工作。有关安装位置,请参阅那里的文档。
猜你喜欢
  • 2010-10-20
  • 1970-01-01
  • 2011-08-26
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多