如何将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" />
但它并没有为我工作。
谢谢
答案 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;