如何使用ASP .Net和MySQL处理连接池请求?

时间:2017-09-19 10:35:46

标签: c# mysql asp.net

我使用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;
            }



        }

0 个答案:

没有答案
相关问题