如何将CommandTimeout添加到web.config中的连接字符串

时间:2013-12-19 13:34:46

标签: web-config timeout connection-string connection-timeout

如何将CommandTimeout添加到web.config中的连接字符串?

我试过了:

<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>

和此:

<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" />

但它并没有为我工作。

谢谢

6 个答案:

答案 0 :(得分:8)

我这样做了:

private readonly MyDbContext _context;

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

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

    }

答案 1 :(得分:7)

据我所知,没有设置命令超时属性的全局方法,您必须为您创建的每个命令对象单独设置CommandTimeout属性。

答案 2 :(得分:1)

您可以在设置中设置超时,并在设置命令超时时参考该值 在appSettings下的config中,为CommandTimeout添加一个键:

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

然后在你的代码中:

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

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

if(cmdTimeout >=0)
    _context.CommandTimeout = cmdTimeout;       

答案 3 :(得分:1)

假设这是一个.NET Web应用程序,因为它看起来像一个&在说明/标签中未指定。这适用于我正在开发的应用程序,将数据库命令超时设置为15秒:

  <connectionStrings>
    <add name="ConnectionString" 
         connectionString="Server=localhost; Port=3306; Database=<DB>;
                           uid=<usr>; pwd=<pw>; default command timeout=15;" 
         providerName="MySql.Data.MySqlClient" />
  </connectionStrings>

默认命令超时在整个应用程序范围内应用于每个单独的数据库请求。据我所知,the default is 30 seconds if this isn't specified。对于Web应用程序而言,花费30秒以上的单个DB命令有点极端。重新考虑如何设计解决方案可能会更好。

答案 4 :(得分:-1)

您可以在web.config文件中添加连接超时。 设置为0使其具有无限的值,如下所示。

Connection Timeout=0;

答案 5 :(得分:-3)

如果要将其放入web.config中,则需要添加空格。尝试:

Command Timeout=60;

而不是:

CommandTimeout=60;