web-dev-qa-db-fra.com

Comment ajouter CommandTimeout à la chaîne de connexion dans web.config

Comment ajouter CommandTimeout à la chaîne de connexion dans web.config?

J'ai essayé:

<add name="ConnectionString" connectionString="Data Source=;Initial Catalog=;Persist Security Info=True;User ID=sa;Password=sa@123;Connect Timeout=200" providerName="System.Data.SqlClient"/>

</connectionStrings>

et ça:

<add name="MyProject.ConnectionString"  
         connectionString="Data Source=127.0.0.1;Initial Catalog=MyDB;Persist Security Info=True;CommandTimeout=60;User ID=sa;Password=saPassw0rd"
         providerName="System.Data.SqlClient" />

mais ça n'a pas marché pour moi.

Merci

9
user833102

Je l'ai fait comme ça:

private readonly MyDbContext _context;

    public LinqToSql() : this(new MyDbContext())
    {
    }

    private LinqToSql(MyDbContext context)
    {
        _context = context;
        _context.CommandTimeout = 500; 

    }
8
user833102

Pour autant que je sache, il n'existe aucun moyen global de définir la propriété Timeout de la commande, vous devez définir la propriété CommandTimeout individuellement pour chaque objet de commande que vous créez.

7
user2074792

Vous pouvez définir le délai d'expiration dans un paramètre et faire référence à cette valeur lorsque le délai d'expiration de la commande est défini.
Dans la configuration sous appSettings, ajoutez une clé pour CommandTimeout:

<add key="ContextCommandTimeout" value="500" />

Puis dans votre code:

int cmdTimeout = -1;
string timeoutSettings = ConfigurationManager.AppSettings["ContextCommandTimeout"];

if(!string.IsNullOrEmpty(timeoutSettings)) 
{
    int.TryParse(timeoutSettings, out cmdTimeout);
}

if(cmdTimeout >=0)
    _context.CommandTimeout = cmdTimeout;       
1
Charles Byrne