我使用ASP .Net和MySQL为Android App创建了Web服务。当我每隔30秒通过Android应用程序或任何浏览器调用我的Web服务时,每件事都很好。但是我想每5秒钟调用一次我的网络服务,然后我就会出现错误。我该如何解决这个问题?
{"消息":"发生错误。"," ExceptionMessage":"错误连接:超时已过期。从池中获取连接之前经过的超时时间。这可能是因为所有池连接都在使用并且达到了最大池大小。"," ExceptionType":"" MySql.Data.MySqlClient.MySqlException",&#34 ;栈跟踪":"在System.Web.Http.ApiController.d__1.MoveNext()\ r \ n ---从抛出异常的上一个位置的堆栈跟踪结束--- \ r \ n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\ r \ n在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\ r \ n在System.Web.Http.Dispatcher.HttpControllerDispatcher.d__0.MoveNext()"}
以下是我的网络服务的功能。我也在连接关闭后使用了Disposed。
public Object get_running_status(string shiftid, string stopid, string routeid)
{
MySqlConnection conn = Connect.getconnection();
conn.Open();
MySqlDataAdapter da = new MySqlDataAdapter();
//MySqlDataAdapter da1 = new MySqlDataAdapter();
MySqlCommand sqlCmd = new MySqlCommand();
//MySqlCommand sqlCmd1 = new MySqlCommand();
try
{
sqlCmd.CommandType = CommandType.Text;
//sqlCmd.CommandText = "select btrack.bt_stop.curr_route_id as route_id,start_loc as start_location,end_loc as end_location,loc_name as waypoints_name,lat_val as waypoints_latitude,long_val as waypoints_longitude from btrack.bt_route join btrack.bt_stop on btrack.bt_route.route_id=btrack.bt_stop.curr_route_id where btrack.bt_stop.curr_route_id=(select curr_route_id from btrack.bt_stop where stop_id=" + stopid + " and shift_cd='" + shiftid + "' limit 1) and btrack.bt_stop.lat_val<>0;SELECT @row_number:=CASE WHEN @customer_no = btrack.bt_stop.stop_id THEN @row_number + 1 ELSE 1 END as rn,btrack.bt_stop.loc_name,btrack.bt_stop.stop_id, ifnull(bus_id,0) bus_id, ifnull (device_id,0) device_id, ifnull(route_id,0) route_id,ifnull( cast(actual_time as time),0) actual_time, ifnull(actual_lat,0)actual_lat, ifnull( actual_long,0)actual_long, ifnull(current_eta,0) current_eta,ifnull( run_status,'NA')run_status, ifnull(created_on,0) as created_on, btrack.bt_stop.Shift_cd FROM btrack.bt_running right join btrack.bt_stop on btrack.bt_running.shift_cd=btrack.bt_stop.shift_cd and btrack.bt_running.stop_id=btrack.bt_stop.stop_id where btrack.bt_stop.shift_cd='1' order by btrack.bt_stop.stop_id";
sqlCmd.CommandText = "bt_fill_view3";
sqlCmd.Parameters.AddWithValue("@p_shift", shiftid);
sqlCmd.Parameters.AddWithValue("@p_loc_id", stopid);
sqlCmd.Parameters.AddWithValue("@p_route_id", routeid);
sqlCmd.CommandType = CommandType.StoredProcedure;
//sqlCmd1.CommandText = "select sl_no,loc_name,eta,actual_time,run_status,color_flag from bt_view_stop where shift_cd = '"+ shiftid + "' and bus_id = (select curr_bus_id from bt_stop where stop_id = '" + stopid + "') order by sl_no";
sqlCmd.Connection = conn;
//sqlCmd1.Connection = conn;
da.SelectCommand = sqlCmd;
//sqlCmd.ExecuteNonQuery();
//da1.SelectCommand = sqlCmd1;
DataTable dt = new DataTable();
da.Fill(dt);
for (int i1 = 0; i1 < dt.Rows.Count; i1++)
{
Running_Status running_status_model = new Running_Status();
running_status_model.ResponseCode = "102";
running_status_model.Status = "Success";
running_status_model.rn = Convert.ToString(dt.Rows[i1]["sl_no"]);
running_status_model.location = Convert.ToString(dt.Rows[i1]["stop_name"]);
running_status_model.stop_id = Convert.ToString(dt.Rows[i1]["scheduled_time"]);
//running_status_model.bus_id = Convert.ToString(dt.Rows[i1]["estimated_time"]);
running_status_model.device_id = Convert.ToString(dt.Rows[i1]["running_status"]);
running_status_model.route_id = Convert.ToString(dt.Rows[i1]["color_flag"]);
running_statuslist.Add(running_status_model);
}
conn.Close();
conn.Dispose();
return running_statuslist;
}
catch (Exception ex)
{
Running_Status running_status_model = new Running_Status();
running_status_model.ResponseCode = "101";
running_status_model.Status = "Error : " + ex;
running_statuslist.Add(running_status_model);
conn.Close();
conn.Dispose();
return running_statuslist;
}
}