Тайм-аут истек. Период ожидания истек до получения соединения из пула - PullRequest
0 голосов
/ 03 марта 2012

У меня есть проблема, когда я загрузил лист Excel, содержащий отправленные URL-адреса, я хочу сопоставить каждую запись Excel с данными БД, она работает нормально, когда я загружаю небольшой файл, он прекрасно работает, но если есть файл 2 МБ, тоесть исключение: Подробности Истекло время ожидания.Время ожидания истекло до получения соединения из пула.Это могло произойти из-за того, что все пулы подключений использовались и был достигнут максимальный размер пула.

Вот мой код

 protected void btnUpload_Click(object sender, EventArgs e)
    {
        if ((txtFilePath.HasFile))
        {

            OleDbConnection conn = new OleDbConnection();
            OleDbCommand cmd = new OleDbCommand();
            OleDbDataAdapter da = new OleDbDataAdapter();
            DataSet ds = new DataSet();
            string query = null;
            string connString = "";
            string strFileName = DateTime.Now.ToString("sddMMyyyy_LOFTY");
            string strFileType = System.IO.Path.GetExtension(txtFilePath.FileName).ToString().ToLower();

            //Check file type
            if (strFileType == ".xls" || strFileType == ".xlsx")
            {
                txtFilePath.SaveAs(Server.MapPath("~/AdminCpanel/UploadedExcel/" + strFileName + strFileType));
            }
            else
            {
                lblMessage.Text = "Only excel files allowed";
                lblMessage.ForeColor = System.Drawing.Color.Red;
                lblMessage.Visible = true;
                return; 
            }

            string strNewPath = Server.MapPath("~/AdminCpanel/UploadedExcel/" + strFileName + strFileType);

            //Connection String to Excel Workbook
            if (strFileType.Trim() == ".xls")
            {
                connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
            }
            else if (strFileType.Trim() == ".xlsx")
            {
                connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
            }

            // Sheet name is Ads Posted
            query = "SELECT * FROM [Ads Posted$]";
            //Create the connection object
            conn = new OleDbConnection(connString);
            //Open connection
            if (conn.State == ConnectionState.Closed) conn.Open();
            //Create the command object
            cmd = new OleDbCommand(query, conn);
            da = new OleDbDataAdapter(cmd);
            ds = new DataSet();
            da.Fill(ds, "validateLog");


            //// Sheet name is Details
            //query = "SELECT * FROM [Details$]";
            ////Create the connection object
            //conn = new OleDbConnection(connString);
            ////Open connection
            //if (conn.State == ConnectionState.Closed) conn.Open();
            ////Create the command object
            //cmd = new OleDbCommand(query, conn);
            //da = new OleDbDataAdapter(cmd);
            //DataSet dsdetails = new DataSet();
            //da.Fill(dsdetails, "Details");

            DateTime dtStartdate =Convert.ToDateTime(txtFromDate.Text);
            DateTime dtEndDate = Convert.ToDateTime(txtEndDate.Text);






            DataColumn dColumn = new DataColumn();
            dColumn.DataType = System.Type.GetType("System.String");
            dColumn.ColumnName = "Status";
            ds.Tables[0].Columns.Add(dColumn);


            bool flag = false;
            if (ds.Tables[0].Rows.Count > 0)
            {

                RegistrationDB db = new RegistrationDB();
                DataTable dtAds = db.GetPostedAdstoValidate(ds.Tables[0].Rows[1]["LoftyID"].ToString());
                //excel sheet
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    if (Convert.ToDateTime(ds.Tables[0].Rows[i]["Date"].ToString()) <= dtEndDate && Convert.ToDateTime(ds.Tables[0].Rows[i]["Date"].ToString()) >= dtStartdate)
                    {
                        //db table
                        for (int z = 0; z < dtAds.Rows.Count; z++)
                        {


                            if (ds.Tables[0].Rows[i]["LoftyAddURL"].ToString() == dtAds.Rows[z]["URL"].ToString())
                            {
                                ds.Tables[0].Rows[i]["Status"] = "Validated!";
                                flag = true;
                                break;
                            }
                            else if (ds.Tables[0].Rows[i]["IPAddress"].ToString() == dtAds.Rows[z]["IPAddress"].ToString())
                            {
                                ds.Tables[0].Rows[i]["IPAddress"] = "Valid IP!";
                                flag = true;
                                break;
                            }

                            flag = false;
                        }
                    }
                    else
                    {
                        flag = true;
                        ds.Tables[0].Rows[i]["Status"] = "Date does not lie between Project start and end date!";
                        ds.Tables[0].Rows[i]["IPAddress"] = "InvalidIP / EmptyIP";

                    }
                    if (!flag)
                        ds.Tables[0].Rows[i]["Status"] = "Not Validated!";
                       //ds.Tables[0].Rows[i]["IPAddress"] = "Invalid IP";

                }

            }

            //ds.Tables[0].Columns.Remove("F5");
            //ds.Tables[0].Columns.Remove("F6");
            //ds.Tables[0].Columns.Remove("F7");
            grvExcelData.DataSource = ds.Tables[0];
            grvExcelData.DataBind();
            //dump to database for logging
            ViewState["MyGridViewDate"]=ds.Tables[0];
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
               RegistrationDB dump = new RegistrationDB();
               string Loftyid = ds.Tables[0].Rows[i]["Loftyid"].ToString();
               string Date = ds.Tables[0].Rows[i]["Date"].ToString();
               string LoftyAddURL = ds.Tables[0].Rows[i]["LoftyAddURL"].ToString();
               string Status = ds.Tables[0].Rows[i]["Status"].ToString();
               string Addno = ds.Tables[0].Rows[i]["Addno"].ToString();
               string IPAddress = ds.Tables[0].Rows[i]["IPAddress"].ToString();
               dump.CreateLogValidation(Loftyid, Date, LoftyAddURL, Status, Addno,IPAddress); 
            }




            lblMessage.Text = "Data retrieved successfully! Total Recodes:" + ds.Tables[0].Rows.Count;
            lblMessage.ForeColor = System.Drawing.Color.Green;
            lblMessage.Visible = true;

            //da.Dispose();
            //conn.Close();
           // conn.Dispose();
        }
        else
        {
            lblMessage.Text = "Please select an excel file first";
            lblMessage.ForeColor = System.Drawing.Color.Red;
            lblMessage.Visible = true;
        }
    }

спасибо за помощь, буду очень благодарендля всех.

1 Ответ

1 голос
/ 03 марта 2012

Увеличение максимального размера загрузки

4MB по умолчанию установлено в machine.config, но вы можете переопределить его в вашем web.config. Например, чтобы увеличить лимит загрузки до 20 МБ, вам нужно сделать следующее:

   <system.web>
   <httpRuntime executionTimeout="240" maxRequestLength="20480" />
   </system.web>

Поскольку для защиты вашего сайта существует ограничение максимального размера запроса, лучше расширить ограничение размера файла для определенных каталогов, а не для всего приложения. Это возможно, поскольку web.config допускает каскадные переопределения. Вы можете добавить файл web.config в вашу папку, которая содержит только что вышеперечисленное, или вы можете использовать тег в вашем основном web.config для достижения того же эффекта:

   <location path="Upload">
   <system.web>
    <httpRuntime executionTimeout="110" maxRequestLength="20000" />
   </system.web>
  </location>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...