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
Je l'ai fait comme ça:
private readonly MyDbContext _context;
public LinqToSql() : this(new MyDbContext())
{
}
private LinqToSql(MyDbContext context)
{
_context = context;
_context.CommandTimeout = 500;
}
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.
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;