sql - 通过 MVC 中的会话建立一个 Oracle 连接
问题描述
我需要在 MVC 中为用户的整个会话创建一个连接。
下面的代码写在登录控制器中以实现相同的目的
OracleConnection con = new OracleConnection();
con.ConnectionString = ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;
con.Open();
Session["oracle_con"] = con;
然后每当我需要连接时,将检查如下
OracleConnection or_con = (OracleConnection)Session["oracle_con"];
if (or_con.State == ConnectionState.Closed)
or_con.Open();
这在我的本地系统中运行良好,sessin 状态模式是“InProc”
但在服务器中,会话状态模式为"StateServer",因此将 Oracle 连接转换为会话会出现以下错误
无法序列化会话状态。在“StateServer”和“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许不可序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“自定义”模式下完成类似的序列化,则适用相同的限制。
[SerializationException:在程序集“Oracle.ManagedDataAccess,版本=4.121.1.0,Culture=neutral,PublicKeyToken=89b483f429c47342”中键入“Oracle.ManagedDataAccess.Client.OracleConnection”未标记为可序列化。]
这是实现我的要求的正确方法还是任何其他方法?
解决方案
OracleConnection 没有实现 Serializable ,因此它不适用于您想要做的事情。为什么要将连接放在会话中?ODP.NET 默认使用连接池,因此不必从头开始创建新的连接请求。
如果连接创建缓慢,可能是因为缺少必须创建的日志文件夹 C:\oracle_client\log\diag\clients。
见这里,创建 32 位 ODP.Net OracleConnection 对象非常慢,这里,http ://milagaia.blogspot.com/2012/04/odpnet-slow-first-connection.html?m=1 。
推荐阅读
- ios - 无法通过 - 线程 1:致命错误:在展开可选值时意外发现 nil
- python - 如何使用多行正则表达式完成删除整行?
- amazon-web-services - MissingRequiredParameter:参数中缺少必需的键“FunctionName”
- c++ - 获取频率最低的两个节点并为它们创建父节点(霍夫曼树)
- php - SQL - 选择用户名 WHERE 角色 = $string
- python - 使用 python 读取选定 Outlook 电子邮件的内容
- java - TableRowSorter 导致行号杂乱无章
- vue.js - Vuetify 从另一个组件调用一个组件的功能
- java - 在Java中检查素数作为用户输入
- bash - Bash 脚本 - 创建目录,在更改名称时复制特定文件