【问题标题】:Connection timeout in server服务器连接超时
【发布时间】:2015-03-24 08:31:39
【问题描述】:

我想询问有关连接超时的问题,因为我遇到了问题。 错误是

“超时。在从池中获取连接之前已经过了超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。”

这样的代码会导致连接超时吗? 调用连接的最佳做法是什么?

using (var cnn = OpenExternalContractor()) //call connection string
{
    var query = @"insert into interfaceRequest  (requestNo,requestAssemblyName,requestApplicationName,requestFunctionName,
            requestParameters,requestUserName,requestUserMail,requestDate)
            values (@requestNo,@requestAssemblyName,@requestApplicationName,@requestFunctionName,
            @requestParameters,@requestUserName,@requestUserMail,getDate())";
                cnn.Execute(query, new
                {
                    requestNo = requestNo,
                    requestAssemblyName = requestAssemblyName,
                    requestApplicationName = jobName.Split('-')[0],
                    requestFunctionName = jobName.Split('-')[1],
                    requestParameters = requestParameters,
                    requestUserName = requestUserName.Replace("\"", "\\"),
                    requestUserMail = userMail
                });
                //Call another function here that call connection string
                PersonnelRepository.UpdateLastNumber(requestNamePrefix,   Convert.ToInt32(lastNumber));
}

public static void UpdateLastNumber(string type, int value)
{
    using (var cnn = OpenExternalContractor()) //Call connection string
    {
        var query = "update AutoNumber set LastNumber = " + value + " where Type = '" + type + "'";
        cnn.Query<int>(query);
    }
}

这里是连接字符串的代码:

protected static IDbConnection OpenExternalContractor() 
{
    IDbConnection dbConnection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ExternalContractor"].ConnectionString);
    dbConnection.Open();
    return dbConnection;
}

谢谢,

【问题讨论】:

  • 我会使用SqlCommand 而不是使用连接。然后您可以为命令设置Timeout
  • 感谢您的回复,这个错误正常吗??也许它是由连接泄漏引起的?如果我指定超时,以后会不会再次出现这个错误??
  • 取决于查询的执行时间。默认超时为 30 秒。您可以在ConnectionString 中修改它。
  • 谢谢,我会试试你的建议

标签: c# connection-pooling connection-timeout


【解决方案1】:

当使用WebConfigurationManager.ConnectionStrings["ExternalContractor"].ConnectionString 获取连接字符串时,您可以在WebConfig 文件中通过更改此连接字符串来更改连接超时,例如:

Data Source=(local);
Initial Catalog=AdventureWorks;
Integrated Security=SSPI;
Connection Timeout=30

来自social.msdn.microsoft.com

【讨论】:

  • 指定连接超时是否足够,还是因为我的代码中的连接泄漏??
  • 一般我们让默认超时,因为它已经足够了,但是如果您知道您的服务器需要更多时间来恢复连接,您可以指定更大的超时。
  • 好,我今天试试,希望能顺利运行,Thnx
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 2017-07-06
  • 2016-03-27
相关资源
最近更新 更多