连接超时VS IIS
本文关键字:IIS VS 超时 连接 | 更新日期: 2023-09-27 18:00:33
我在错误日志中得到了这个异常。。
在从池中获取连接。
重新启动IIS使我能够登录回我的应用程序。。那么你认为问题出在哪里呢?是否在IIS属性设置中?
代码是这样的:
MySqlConnection connection = null;
try
{
connection = MySqlConnectionHandler.OpenConnection();
string strText =string.Empty;
strText = "<<sql statement>>";
using (MySqlCommand cmd = new MySqlCommand(strText, connection))
{
cmd.Parameters.Add(new MySqlParameter("ID", MySqlDbType.Int32));
cmd.Parameters["ID"].Value = 100;
cmd.ExecuteNonQuery();
}
}
finally
{
MySqlConnectionHandler.CloseConnection(connection);
}
我的CloseConnection方法内部有
if (con != null)
{
con.Close();
con.Dispose();
}
这几乎总是意味着你不会在连接上调用Dispose()
,并且你已经饱和了池,直到GC运行为止——如果你的应用程序现在已经死了,可能就不会了。从本质上讲,你已经在一段时间内连续打开了连接(从未归还),现在已经一个也没有了。解决方案:当你完成后,把它们还给游泳池。
无论何时使用连接之类的东西,都要使用using
语句或其他机制,以确保在使用完它后立即处理它。这同样适用于任何IDisposable
,但连接特别容易受到这种影响。
既然你说你确实调用了Dispose()。。。
我会尝试两件事暂时增加连接超时,看看是否有问题:
MySqlCommand.CommandTimeout = 45; //in seconds
这会降低应用程序的速度,因此您应该仅将其用于故障排除。如果是,您需要优化SQL查询。
或者,您的连接池可能会被超出,因此您可能需要增加连接池。