IIS上的SQLConnection超时而不是本地的

问题描述

我在IIS 8.5上遇到奇怪的行为。在消耗了几次端点后(5-6次),我得到一个错误:在从池中获取连接之前,超时时间已经过去。发生这种情况的原因可能是所有池化连接都在使用中,并且达到了最大池大小。

我的代码是用net core 3.1编写的,并连接到sql server并尝试执行存储过程。它可以在本地处理任意数量的呼叫。在本地验证,不会引发任何异常。

 public int GetCount()
 {
        int jobCount = 0;
        using (sqlCommand com = new sqlCommand("dbo.GETCount",new sqlConnection(this.ConnectionString)) { CommandType = CommandType.StoredProcedure })
        {
            com.Parameters.Add(new sqlParameter("@jobCount",sqlDbType.Int) { Direction = ParameterDirection.Output });
            try
            {
                com.Connection.open();
                com.ExecuteNonQuery();
                jobCount = (int)com.Parameters[0].Value;
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                com.Connection.Close();
            }

        }

        return jobCount;
    }

有什么建议吗?

解决方法

这是我的建议。

  1. 始终在finally块中关闭连接

  2. 增加池大小,如在连接字符串中

    string connectionString =“数据源=本地主机;初始目录= Northwind;” +

    “集成安全性= SSPI;最小池大小= 10;最大池大小= 100”;

  3. 完全不使用池化

    string connectionString =“数据源=本地主机;初始目录= Northwind;” +

    “ Integrated Security = SSPI; Pooling = false;”;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...