[C#][Oracle] ORA-00020 -> Nb max de process atteind
Bonjour,
j'ai une appli ASP.NET en C# que je developpe.
Je suis pour le moment le seul utilisateur qui l'utilise ...et pourtant au bout de quelques manipulations dans l'application, j'ai l'erreur suivante :
ORA-00020: maximum number of processes (200) exceeded
Je pense que je ferme bien les connexions :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
public static OracleDataReader GetColorChoices()
{
OracleConnection _connection = new OracleConnection(ConfigurationSettings.AppSettings["ConnectString"]);
try
{
_connection.Open();
}
catch (Exception err)
{}
string strQuery = "SELECT color, description FROM color_choices";
OracleCommand _command = new OracleCommand(strQuery, _connection);
_command.CommandType = CommandType.Text;
OracleDataReader _reader = null;
try
{
_reader = _command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
return _reader;
}
catch
{
_connection.Close();
return _reader;
}
} |
Une des solutions que j'ai trouvé sur le net consiste à augmenter e parametre (200) dans un fichier de Oracle mais bon je ne crois pas que ce soit une bonne solution, vaut mieux trouver ce qui se passe dans mon programme :?
Enfin pour ne pas ouvrir/fermer la connexion a chaque requete (ma page remplit tout de meme une quinzaine de datagrids + requetes d'identification ...), j'ai tenté de créer une connexion et de louvrir dans le session_start du global.asax et d'utiliser cette objet a chaque requete mais je me retrouve face au meme pb !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
protected void Session_Start(Object sender, EventArgs e){
try{
OracleClient.OracleConnection _connection = new OracleClient.OracleConnection(ConfigurationSettings.AppSettings["ConnectString"]);
System.Web.HttpContext.Current.Session["ORACLECONNECTION"] = _connection;
_connection.Open();
}
catch{DAL.Impl.Utils.Alert("Connexion pb");}
}
/****/
protected void Session_End(Object sender, EventArgs e){
try{
OracleConnection _connection = (OracleConnection)System.Web.HttpContext.Current.Session["ORACLECONNECTION"];
_connection.Close();
_connection.Dispose();
System.Web.HttpContext.Current.Session["ORACLECONNECTION"] = null;
}
catch{}
}
/**puis utilisation dans mes requetes : **/
public static OracleDataReader GetColorChoices()
{
OracleConnection _connection = (OracleConnection)System.Web.HttpContext.Current.Session["ORACLECONNECTION"];
string strQuery = "SELECT color, description FROM color_choices";
OracleCommand _command = new OracleCommand(strQuery, _connection);
_command.CommandType = CommandType.Text;
OracleDataReader _reader = null;
try
{
_reader = _command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
return _reader;
}
catch
{
_connection.Close();
return _reader;
}
} |
Merci d'avance pour votre aide j'y suis depuis 12h je deviens fou 8O lol
Gaël