【问题标题】:Connection Timeout property in SqlServer Connection string not WorkingSqlServer 连接字符串中的连接超时属性不起作用
【发布时间】:2016-10-22 04:07:14
【问题描述】:

我一直在尝试检查数据库是否可访问并根据连接状态执行自定义操作。我的代码如下

string connectionString = "Data Source =" + textBox1.Text + ";Initial Catalog=master;Integrated Security=true;Connect Timeout=1";

        SqlConnection connection = new SqlConnection(connectionString);
        try
        {
            connection.Open();
             //do some action
            connection.Close();
        }
        catch (SqlException)
        {
            connection.Close();
            //do some action
        }

我通过文本框提供目标机器名称。在上面的代码中,只要连接成功,try 块中的代码就会在几秒钟内执行。但如果无法建立连接,它会忽略 Connect Timeout 属性并等待 30 秒,然后再移动到 catch 块。

我尝试了以下链接connection timeout property in connection string ignored,但没有成功。我尝试了 5、10、15 和 20 秒的连接超时值,但似乎没有任何效果。

如果我的方法有问题,请帮助我。

谢谢!

【问题讨论】:

    标签: c# sql-server connection-string sqlconnection


    【解决方案1】:

    您需要指定正确的连接字符串关键字Connection Timeout=1

    根据我的经验,当错误是由于服务器无法访问而不是完整的连接池导致错误时,引发异常之前的实际时间可能比指定的时间长几秒钟,这会导致 InvalidOperationException 而不是 SqlException。我建议使用using 块来确保立即处理测试连接:

    try
    {
        using (var connection = new SqlConnection(connectionString))
        {
            connection.Open();
        }
    }
    catch (SqlException ex)
    {
        //do some action
    }
    catch (InvalidOperationException ex)
    {
        //do some action
    }
    

    考虑使用SqlConnectionStringBuilder class 来避免注入漏洞。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 2018-09-03
      • 2013-02-16
      相关资源
      最近更新 更多