C# 在c中为OracleConnection处理程序创建会话变量#

C# 在c中为OracleConnection处理程序创建会话变量#,c#,asp.net,oracle,session,session-variables,C#,Asp.net,Oracle,Session,Session Variables,我有一个ASP.NET C#web应用程序,它有多个网页,每个网页都访问Oracle数据库。我正在使用(OracleConnection con=neworacleconnection(consting)处理程序从每个网页中的c#访问oracle数据库。我想在第一个网页中创建一个处理程序,并将其作为会话变量传递,以最小化打开的连接数 我使用以下命令创建了一个会话变量: Session.Add("OracleHandler",con); 我尝试使用以下方法访问不同网页中的会话变量: Oracle

我有一个ASP.NET C#web应用程序,它有多个网页,每个网页都访问Oracle数据库。我正在使用(OracleConnection con=neworacleconnection(consting)处理程序从每个网页中的c#访问oracle数据库。我想在第一个网页中创建一个处理程序,并将其作为会话变量传递,以最小化打开的连接数

我使用以下命令创建了一个会话变量:

Session.Add("OracleHandler",con);
我尝试使用以下方法访问不同网页中的会话变量:

OracleConnection con = (OracleConnection)(Session["OracleHandler"]);
OracleCommand SqlCodeSelect = new OracleCommand(CodeSelect, con);**
但当我尝试运行它时,我收到以下错误消息:

由于对象的当前状态,
操作无效。


请在这方面帮助我。

你不必担心,因为你不会获得太多。net引擎处理一个连接池,并使它们保持打开状态以满足不同的请求


有关更多详细信息,请查看

上的“OracleClient连接池”,非常感谢Claudio。当前,每次访问数据库时,我都会打开与Oracle的新连接。我的DBA使用她的oracle UI看到76个到oracle的连接请求,并要求我减少请求数量。您认为我使用会话变量访问处理程序的方式有什么问题吗?如果我们无法访问处理程序,还有其他选择吗?@varun kumhar:尽管.net engine保留了一个连接池,但您需要在连接完成后立即调用
close
,以释放它(将其返回到池中,以便它可以处理其他请求)。如果你愿意,你可以显示你的连接使用代码。嗨,克劳迪奥。谢谢你的回复。我正在关闭连接。在本例中,我指的是连接请求的总数。每次访问数据库时(例如,在rowdatabound函数中)我都会打开一个连接,并在访问后将其关闭。有没有一种方法可以将Oracle连接处理程序添加到会话变量并在其他页面中访问它?我尝试的上述方法没有奏效……@varun kumhar:恐怕我无法提出任何方法来实现这一点,因为我认为这不是正确的方法。如果您按预期方式释放连接,则不需要这样做。我很抱歉不能提供更多的帮助。