【问题标题】:connection timeout property in connection string ignored连接字符串中的连接超时属性被忽略
【发布时间】:2010-02-15 12:01:46
【问题描述】:

我正在用 C# 构建一个应用程序。我正在使用如下连接字符串:

DSN=SomeDataSource; Trusted Connection = yes; Uid=SomeId; pwd=somePwd; Connection Timeout=x

但是无论我设置什么值为xConnection Timeout = x),通过下断点,我可以看到我的DbConnection对象的ConnectionTimeout属性始终具有默认值15

我错过了什么吗?

谢谢。

【问题讨论】:

  • 您是想将 X 设置为高于还是低于 15?您是否确认它实际上在 15 处超时,而不是在 X 处(例如,您正在查看的值可能是一个红鲱鱼)。此外,更多代码和/或上下文在这里会更有帮助(例如,您是否连接到 Oracle 数据库等)。
  • 我正好遇到了这个问题。奇怪的是,我添加了日志记录以确认正在使用的连接字符串及其花费的时间,而我只得到 9 或 10 秒,而不是我要求的 120 秒或默认的 15 秒。
  • 这里也一样。尝试连接超时 = 5 和连接超时 = 5。两者都被忽略,需要 15。也许 15 是最小值??
  • 您解决了这个问题吗?面临类似的问题。

标签: c# timeout connection-string


【解决方案1】:

ConnectionString 中的Connection Timeout 只控制连接的超时时间。如果您需要增加命令的等待时间,请使用 SqlCommand 的 CommandTimeout 属性。

【讨论】:

  • 谢谢!
【解决方案2】:

至少在我使用SqlConnectionStringBuilder 测试场景时,我没有看到您所指示的行为。

连接的ConnectionTimeout 属性与构建器上设置的ConnectTimeout 匹配。我使用 520120 作为值,并且都在连接上设置。

使用 System.Data.SqlClient;

var builder = new SqlConnectionStringBuilder();

builder.ApplicationName     = "My Demo App";
builder.ConnectTimeout      = 5;
builder.DataSource          = "(local)";
builder.InitialCatalog      = "My Database";
builder.IntegratedSecurity  = true;

using(var connection = new SqlConnection(builder.ConnectionString))
{
    Console.WriteLine("Connection Timeout: {0}", connection.ConnectionTimeout);
}

如果您不处理 SQL,您还可以考虑使用 DbConnectionStringBuilder 或其子类型之一。一般来说,我发现使用可用的构建器之一以编程方式构建连接字符串是最安全的,这样您就可以避免用于创建连接的连接字符串的任何错误格式。

【讨论】:

    【解决方案3】:

    是的,15 是最低要求,具体取决于您在做什么。可能是每个供应商的事情。我什至发现,当尝试使用 SQL Native Client 使用少于 15 个(带有一些第 3 方控件)时,我最终会出现无限超时。呸。当我设置为 15 或更高时,它的行为符合预期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多