97 votes

Modification du délai d'expiration de SqlConnection

J'essaie de remplacer le SqlConnection de 15 secondes et j'obtiens une erreur indiquant que le

La propriété ou l'indexeur ne peut pas être affecté car il est en lecture seule.

Y a-t-il un moyen de contourner ceci?

 using (SqlConnection connection = new SqlConnection(Database.EstimatorConnection))
{
   connection.Open();

   using (SqlCommand command = connection.CreateCommand())
   {
       command.CommandType = CommandType.StoredProcedure;
       connection.ConnectionTimeout = 180; // This is not working 
       command.CommandText = "sproc_StoreData";
       command.Parameters.AddWithValue("@TaskPlanID", order.Projects[0].TaskPlanID);
       command.Parameters.AddWithValue("@AsOfDate", order.IncurDate);

       command.ExecuteNonQuery();
    }
}

193voto

Anil Mathew Points 958

Si vous souhaitez fournir un délai d'attente pour une requête particulière, alors CommandTimeout est la voie à suivre.

Son utilisation est :

 command.CommandTimeout = 60; //The time in seconds to wait for the command to execute. The default is 30 seconds.

24voto

daniele3004 Points 62

Un moyen plus propre consiste à définir connectionString dans un fichier xml, par exemple Web.Confing(WepApplication) ou App.Config(StandAloneApplication) .

  <connectionStrings>
    <remove name="myConn"/>
    <add name="myConn" connectionString="User ID=sa;Password=XXXXX;Initial Catalog=qualitaBorri;Data Source=PC_NAME\SQLEXPRESS;Connection Timeout=60"/>
  </connectionStrings>

Par code, vous pouvez vous connecter de cette manière :

 public static SqlConnection getConnection()
{
        string conn = string.Empty;
        conn = System.Configuration.ConfigurationManager.ConnectionStrings["myConn"].ConnectionString;
        SqlConnection aConnection = new SqlConnection(conn);
        return aConnection;
}

Vous pouvez définir ConnectionTimeout uniquement lorsque vous créez une instance. Lorsque l'instance est créée, vous ne modifiez pas cette valeur.

18voto

Justin Niessner Points 144953

Vous pouvez toujours l'ajouter à votre chaîne de connexion :

 connect timeout=180;

9voto

Horev Ivan Points 44

Vous pouvez ajouter Connection Timeout=180; à votre chaîne de connexion

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X