忽略连接字符串中的连接超时属性

时间:2010-02-15 12:01:46

标签: c# timeout connection-string

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

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

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

我在这里错过了什么吗?

感谢。

3 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:1)

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

连接的ConnectionTimeout属性与构建器上设置的ConnectTimeout匹配。我使用 5 20 120 作为值,并在连接上设置了所有值。

使用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或其子类型之一。通常,我发现使用其中一个可用的构建器以编程方式构建连接字符串是最安全的,这样可以避免用于创建连接的连接字符串的任何错误格式。

答案 2 :(得分:-1)

是的,15是最低的,取决于你正在做什么。可能是每个提供商的事情。我甚至在使用SQL Native Client尝试使用少于15个(使用一些第三方控件)时发现,我最终得到了无限超时。呸。当我设置为15或更高时,它的行为与预期一致。