首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# .net核心在expire_time之后重新启动Oracle会话

C# .net核心在expire_time之后重新启动Oracle会话
EN

Stack Overflow用户
提问于 2018-02-22 14:44:55
回答 1查看 344关注 0票数 0

WebApi核心(C#)上的.net项目使用dotNetCore.Data.OracleClient ( .Net核心的非官方Oracle )Nuget的包(可能很重要)的System.Data.OracleClient

在webapi中,我从Oracle调用存储过程,例如:

代码语言:javascript
复制
string cs = Environment.GetEnvironmentVariable("ORACLE_CS");
  using (DbConnection connection = new OracleConnection(cs)) {
    connection.Open();
    using (var command = connection.CreateCommand()) {
      command.CommandText = "sp_check";
      command.CommandType = CommandType.StoredProcedure;
      command.ExecuteNonQuery();
      connection.Close();
    }
}

DB Oracle的参数sqlnet.expire_time设置为3分钟

当我第一次调用sp时-它工作得很好,如果不晚于3分钟,当我再调用一次时,它也可以工作,但如果我在最后一次调用3分钟后调用过程,我会得到异常

代码语言:javascript
复制
RA-03135: connection lost contact
Process ID: 83002
Session ID: 450 Serial number: 7747

如果我尝试再打一次电话,我就会遇到异常

代码语言:javascript
复制
ORA-03114: not connected to ORACLE

我知道会话已过期,但每次要调用过程时,我都会打开连接。我也听说当我做connection.Open()时,不会每次都创建新的会话,而只是使用旧的会话。

怎么做?当我收到会话过期的异常时,我如何初始化新的Oracle会话?

附言:这个问题发生在我在调试配置中运行时,当我在发布配置上运行时,每次都没有问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-22 22:53:41

您必须禁用连接池

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48921186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档