C# 尝试在MVC 4应用程序中打开连接时出现ORA-06413错误
我有一个DLL,负责对数据库进行查询。在该DLL中,我有一个打开应用程序和数据库之间连接的方法,如下所示:C# 尝试在MVC 4应用程序中打开连接时出现ORA-06413错误,c#,oracle,asp.net-mvc-4,iis-express,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 = n
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;
}
专用OracleConnection\u InitConnection()
{
this.LastException=null;
this.Errors=新列表();
OracleConnection conn=null;
尝试
{
conn=新的OracleConnection(“数据源=(描述=(地址=(协议=TCP)(主机=***)(端口=***))(连接数据=(服务名称=***)(服务器=专用));用户Id=***;密码=***;”;
conn.Open();
}
捕获(例外情况除外)
{
this.LastException=ex;
此.Errors.Add(ex);
}
返回连接;
}
我使用版本为2.0.50727的System.Data.OracleClient.dll来管理连接
此DLL由MVC4 Web应用程序使用,该应用程序使用C#和.Net Framework 4.0实现
当我在Windows窗体项目中使用此DLL时,我可以毫无困难地连接到数据库。然而,当我尝试在MVC系统中使用相同的DLL或使用WebForms时,我会得到一个错误
我得到的错误是ORA-06413-连接未打开
。在ISS Express中运行应用程序时会发生这种情况,设置为以32位运行
当我将ISS Express更改为64位时,我得到的错误是:OCIEnvCreate失败,返回代码为-1,但错误消息文本不可用
我想我已经找到了问题所在
在这个项目中,我使用了另一个项目中的一些库。其中一个在.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\
痕迹;调试
促使
4.
任意CPU
这意味着此程序的编译版本将存储在\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>
pdbonly
真的
bin\Release\
痕迹
促使
4.
假的
Wich表示程序的输出将存储在bin\Release中。
这导致了问题,因为当我的控制台应用程序试图使用该库时,它位于另一个文件夹中。
在VS2015中无法解决这个问题,但当我将控制台应用程序的属性组更改为与库相同的配置时,问题就迎刃而解了。我想我已经找到了问题所在 在这个项目中,我使用了另一个项目中的一些库。其中一个在.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\
痕迹;调试
促使
4.
任意CPU
这意味着此程序的编译版本将存储在\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>
pdbonly
真的
bin\Release\
痕迹
促使
4.
假的
Wich表示程序的输出将存储在bin\Release中。
这导致了问题,因为当我的控制台应用程序试图使用该库时,它位于另一个文件夹中。
在VS2015中无法解决这个问题,但当我将控制台应用程序的属性组更改为与库相同的配置时,问题就迎刃而解了。我看到的大多数解决方案都是由于应用程序的位置。似乎它不喜欢路径中的奇怪角色等。尝试将解决方案移动到仅使用字母数字命名的短路径。我看到的大多数解决方案都是由于应用程序的位置。似乎它不喜欢路径中的奇怪角色等。尝试将解决方案移动到仅使用字母数字命名的短路径。