如何将命令超时添加到 web.config 中的连接字符串



如何将 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" />

但它对我不起作用。

谢谢

我这样做了:

private readonly MyDbContext _context;
    public LinqToSql() : this(new MyDbContext())
    {
    }
    private LinqToSql(MyDbContext context)
    {
        _context = context;
        _context.CommandTimeout = 500; 
    }

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

您可以在设置中设置超时,并在设置命令超时时引用该值。
在 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;       

对于那些仍然感兴趣的人,截至 2020 年 10 月左右,看起来这在 .NET EF Core 中是可能的。

使用开源 .NET 客户端的最新 2.1.0 预览版 2适用于 Microsoft SQL Server 和 Azure SQL 数据库的驱动程序,Microsoft.Data.SqlClient,现在可以设置默认值通过连接字符串的命令超时。

现在,您只需更改连接字符串,以前需要更改代码,以及也许对代码的更改您没有能力更改。

当您使用第三方工具时,这可能是一个问题,例如实体框架核心迁移或 EF 核心数据库反向工程(脚手架)。

指:https://erikej.github.io/sqlclient/2020/10/26/sqlclient-commandtimeout-preview.html

不支持

关键字参数异常:不支持关键字:"命令超时"

假设这是一个 .NET Web 应用程序,因为它看起来像一个,并且没有在描述/标记中指定。这适用于我一直在开发的应用程序,将 DB 命令超时设置为 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>

默认命令超时在应用程序范围内应用于每个单独的数据库请求。据我所知,如果未指定,默认值为 30 秒。对于 Web 应用程序,花费超过 30 秒的单个数据库命令有点极端;重新考虑一下如何构建解决方案可能会更好。

如果你想

把它放到你的web.config中,你需要添加一个空格。尝试:

Command Timeout=60;

而不是:

CommandTimeout=60;

相关内容

  • 没有找到相关文章

最新更新