问题描述
我必须为 .NET5.0 制作应用程序。 (核)。我已经安装了软件包 Devart.Data (5.0.2658) 和 Devart.Data.Oracle(9.14.1234)。 我在我的电脑上使用 32 位 oracle 客户端。 我已将我的应用程序切换到 x86 模式。
我需要连接到 Oracle 12 服务器。
这是我的代码:
[Route("GetMyData")]
[HttpGet]
public List<Cis_titul_pred> GetCiselnik()
{
List<DataModule.BO.Cis_titul_pred> testlist =
DataModule.DAL.Cis_titul_predDB.Instance.GetList();
return testlist;
}
public List<Cis_titul_pred> GetList()
{
List<Cis_titul_pred> cis_titul_predList = null;
using (OracleConnection oraConnect = new OracleConnection(AppConfig.ConnectionString))
{
OracleCommand oraCommand = new OracleCommand(selectList,oraConnect);
oraCommand.CommandType = CommandType.Text;
oraConnect.open();
using (OracleDataReader oraReader = oraCommand.ExecuteReader())
{
if (oraReader.HasRows)
{
cis_titul_predList = new List<Cis_titul_pred>();
while (oraReader.Read())
{
cis_titul_predList.Add(FillCis_titul_pred(oraReader));
}
}
oraReader.Close();
}
oraConnect.Close();
}
return cis_titul_predList;
}
当我创建 .NET5.0 桌面 (WinForms) 应用程序时,一切正常 - 我可以连接到 Oracle 服务器并读取数据。
当我创建 .NET5.0 WEB 应用程序时,一切正常 - 我可以连接到 Oracle 服务器并读取数据。
当我创建 .NET5.0 OpenApi 应用程序时,我收到错误消息“Devart.Data.Oracle.OracleException (0x80004005): 服务器没有在指定的超时间隔内响应 在 Devart.Data.Oracle.dp.a(cj A_0,di A_1) 在 Devart.Data.Oracle.OracleInternalConnection..ctor(cj connectionoptions,OracleInternalConnection proxyConnection) 在 Devart.Data.Oracle.ci.a(ae A_0,Object A_1,DbConnectionBase A_2) 等等...等等..."
我在所有三个应用程序中使用相同的代码连接到 Oracle 服务器
我尝试将目标框架更改为 NET.Core 3.0 或 NET.Cre 3.1,但没有成功。
有什么想法吗?
我能做什么?
解决方法
.NET5.0 OpenApi 应用程序是什么意思?它与 .net5 web 的架构相同...请检查您的 appSettings.json 文件中是否有正确且相同的连接字符串。还可以考虑使用依赖注入而不是在控制器内创建 OracleConnection
实例