Хранимая процедура не находит при вызове одновременных веб-запросов API - PullRequest
0 голосов
/ 27 июня 2018

Привет, у меня есть Get API, который запрашивает данные из 3 хранимых процедур, он работает нормально, когда он вызывает только один раз, но не удается, когда этот API вызывает несколько раз simoltaneousely, например, когда он вызывает 10 раз, 2-3 раза не удается и отправить исключение, что он не находит хранимую процедуру это моя функция

 public  POSCustomerDetailResponse POSCustomerDetail(string BranchID, string CustomerCode, string AllBranches, string CurrentDate)
        {
            POSCustomerDetailResponse objDetails = new POSCustomerDetailResponse();
            int GramentDue = 0, UnderProcess = 0;
            double AmountDue = 0.0;
            int PendingOrder = 0;
            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "sp_CustomerAllStoreData";
            cmd.Parameters.AddWithValue("@Flag", 3);
            cmd.Parameters.AddWithValue("@BranchId", BranchID);
            cmd.Parameters.AddWithValue("@CustCode", CustomerCode);
            cmd.Parameters.AddWithValue("@SelectedBranch", AllBranches);
            cmd.Parameters.AddWithValue("@FilterFlag", 3);
            ds = Appclass.GetData(cmd);
            if (ds.Tables.Count > 0)
            {
                dt = ds.Tables[0];
                foreach (DataRow dtrow in dt.Rows)
                {
                    GramentDue = GramentDue + Convert.ToInt32(dtrow["ReadyClothes"].ToString());
                    AmountDue = AmountDue + Convert.ToDouble(dtrow["Balance"].ToString());
                    UnderProcess = UnderProcess + Convert.ToInt32(dtrow["BalQty"].ToString());
                }
                PendingOrder = ds.Tables[0].Rows.Count;
            }
            objDetails.PendingOrders = PendingOrder;
            objDetails.DueAmt = Math.Round(AmountDue, 2);
            objDetails.ReadyPcs = GramentDue;
            objDetails.UnderProcessPcs = UnderProcess;

            DataSet ds1 = new DataSet();
            ds1 = GetCustRatings(CurrentDate, BranchID, CustomerCode);
            if (ds1.Tables[0].Rows.Count > 0)
            {
                objDetails.AllRating = Convert.ToInt32(ds1.Tables[0].Rows[0]["AllRating"]);
                objDetails.CurrentRating = Convert.ToInt32(ds1.Tables[0].Rows[0]["CurrentRating"]);
                objDetails.IsActive = ds1.Tables[0].Rows[0]["IsActiveCust"].ToString();
                objDetails.IsNewCustomer = ds1.Tables[0].Rows[0]["NewCustomer"].ToString();
                objDetails.CustomerAtRisk = ds1.Tables[0].Rows[0]["CustomerOverDue"].ToString();
            }

            DataSet ds2 = new DataSet();
            ds2 = GetPackageDetails(CustomerCode, CurrentDate, BranchID);
            if (ds2.Tables[0].Rows.Count > 0)
            {
                objDetails.PackageName = ds2.Tables[0].Rows[0]["PackageName"].ToString();
                objDetails.PackageStartDate = ds2.Tables[0].Rows[0]["StartDate"].ToString();
                objDetails.PackageExpiryDate = ds2.Tables[0].Rows[0]["EndDate"].ToString();
            }
            var dsCust = GetCustomerDetails(BranchID, CustomerCode);
            if (dsCust.Tables[0].Rows.Count > 0)
            {
                objDetails.MemberShipId = dsCust.Tables[0].Rows[0]["MemberShipId"].ToString();
                objDetails.CurrencyType = dsCust.Tables[0].Rows[0]["CurrencyType"].ToString();                
            }

            return objDetails;

        }

и это моя функция для установки соединения и заполнения данных

  public static DataSet GetData(SqlCommand cmd)
    {
        sqlConStr = strSqlConn();
        SqlConnection con = new SqlConnection(sqlConStr);
        SqlDataAdapter adap = new SqlDataAdapter();
        if (con.State == ConnectionState.Open)
        {
            con.Close();
        }
        else
        {
            con.Open();
        }
        DataSet ds = new DataSet();
        cmd.Connection = con;
        adap.SelectCommand = cmd;
        adap.Fill(ds, "table");
        con.Close();
        return ds;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...