Как мне это сделать асинхронное программирование в веб-API внутри foreach в .Объем 4.5
Привет ,
Я пытаюсь создать asp.net веб-api. Этот API будет вызываться из планировщика из облака один раз в 15 минут, где этот API будет искать в БД и вызывать внешний сторонний веб-сервис несколько раз с разными параметрами.Внешняя служба просто вернет true из false.
Я довольно новичок в асинхронном программировании. Я даже не знаю, что я делаю правильно , и если да, то правильно ли это делать. Я прочитал много статей и прошел через несколько одинаковых вопросов о переполнении стека, но не смог найти ответа.
Некоторые статьи говорит, что это не хорошо, чтобы использовать задач в веб-API , некоторые говорят, что использование параллельных прог некоторые говорят, что не использовать параллельный прог на сервере. я в замешательстве. Пожалуйста, подскажите мне правильный способ использования асинхронной проги на сервере.
Что я уже пробовал:
public void FindSessionAndInitiateCall() { using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)) { using (SqlCommand cmd = new SqlCommand()) { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_FindSessionsToConnect"; SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { CreateRequest(dr["ManagerMob"].ToString(), dr["EmployeeMob"].ToString(), dr["SessionDuration"].ToString(), dr["SlotId"].ToString()); } } } } private async Task<string> CreateRequest( string ManagerMob,string EmployeeMob, string SessionDuration, string SlotId) { HttpWebRequest request; var result = ""; try { string URL = "*******************"; request = (HttpWebRequest)WebRequest.Create(URL); request.Method = "POST"; WebResponse response = await request.GetResponseAsync(); //HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { var objText = reader.ReadToEnd(); var root = JObject.Parse(objText); result = root["msg"].ToString(); } response.Close(); return result; } catch (Exception ex) { return ex.Message; } }