尝试在MVC 4应用程序中打开连接时出现ORA-06413错误

时间:2017-05-23 11:02:45

标签: c# oracle asp.net-mvc-4 iis-express

我有一个DLL负责在数据库上进行查询。在该DLL中,我有一个方法可以打开应用程序和数据库之间的连接,如下所示:

private OracleConnection _InitConnection()
{
    this.LastException = null;
    this.Errors        = new List<Exception>();

    OracleConnection conn = null;

    try
    {
        conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=***)(PORT=***)))(CONNECT_DATA=(SERVICE_NAME=****)(SERVER = DEDICATED))); User Id=***; Password=***;");

        conn.Open();
    }
    catch (Exception ex)
    {
        this.LastException= ex;
        this.Errors.Add(ex);
    }

    return conn;
}

我使用System.Data.OracleClient.dll版本2.0.50727来管理连接。

此DLL由MVC 4 Web应用程序使用,使用C#和.Net Framework 4.0实现。

当我在Windows窗体项目中使用此DLL时,我可以毫无困难地连接到数据库。但是,当我尝试在MVC系统中使用相同的DLL或使用WebForms时,我收到错误。

我得到的错误是ORA-06413 - Connection not Open。当我在ISS Express中运行应用程序时,会发生这种情况,设置为32位运行。

当我将ISS Express更改为64位时,我收到错误OCIEnvCreate failed with return code -1 but error message text was not available

1 个答案:

答案 0 :(得分:0)

我想我已经找到了问题。

在项目中,我使用了另一个项目中的一些库。其中一个在.csproj文件中配置如下

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 <DebugSymbols>true</DebugSymbols>
 <DebugType>full</DebugType>
 <Optimize>false</Optimize>
 <OutputPath>bin\Debug\</OutputPath>
 <DefineConstants>TRACE;DEBUG</DefineConstants>
 <ErrorReport>prompt</ErrorReport>
 <WarningLevel>4</WarningLevel>
 <PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>

这意味着该程序的编译版本将存储在\ bin \ Debug路径中。 但是,我用来测试库的控制台应用程序具有以下配置:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
 <DebugType>pdbonly</DebugType>
 <Optimize>true</Optimize>
 <OutputPath>bin\Release\</OutputPath>
 <DefineConstants>TRACE</DefineConstants>
 <ErrorReport>prompt</ErrorReport>
 <WarningLevel>4</WarningLevel>
 <Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>

这意味着程序的输出将存储在bin \ Release中。 这导致了这个问题,因为当我的控制台应用程序试图使用该库时,它位于另一个文件夹中。 在VS2015中无法解决这个问题,但是当我将控制台应用程序的属性组更改为与我的库相同的配置时,问题就消失了。