【发布时间】:2017-12-10 01:50:29
【问题描述】:
我有一个 aspnetcore 网络服务,它一个接一个地执行多个请求。我在不同的时间得到一个例外。错误消息是:
MySql.Data.MySqlClient.MySqlException:连接错误:超时已过期。在从池中获取连接之前超时时间已过。这可能是因为所有池连接都在使用中并且已达到最大池大小。
在 MySql.Data.MySqlClient.MySqlPool.GetConnection()
在 MySql.Data.MySqlClient.MySqlConnection.Open()
在 bdtFood.Controllers.FoodController.Get(Int32 id, Int32 idMeeting)
在 lambda_method(Closure , Object , Object[] )
在 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__28.MoveNext()
我该如何处理这个异常。同一时间不应有多个请求。
编辑:请求的代码。
while (cn.State == System.Data.ConnectionState.Open)
{
}
cn.Close();
cn.Open();
Modells.Room room = new Modells.Room(-2, "dummy");
MySqlCommand myCommand = new MySqlCommand("SELECT * FROM room WHERE idRoom = @idRoom", cn);
myCommand.Parameters.Add("@idRoom", MySqlDbType.Int32, 11).Value = idRoom;
using (reader = myCommand.ExecuteReader())
{
while (reader.Read())
{
room = new Modells.Room(reader.GetInt32(0), reader[1].ToString());
}
}
【问题讨论】:
-
你在处理你的连接和命令吗?
-
我为每个请求使用新连接和新命令。这可能是问题吗?我认为这不会是问题,因为我一次使用它们。
-
如果没有看到你的一些代码,就不可能给你任何其他更具体的建议。
-
我将代码更改为在控制器中使用相同的连接。并且仍然出现同样的错误