Как отправить запрос HTTP в asp.net, не ожидая ответа и не связывая ресурсы

Я решил это ... Проблема была в запросе гэппи, при получении событий. Я использовал неправильный calendarId. У меня установлено значение по умолчанию «основной», но фактический использованный ID календаря можно найти в разделе «Настройки Google Calendar» >> «Интегрировать календарь». В моих настройках calendarId был адресом электронной почты связанной учетной записи.

Таким образом, запрос гэппи выглядит так:

const fetchTimeLimit = new Date(2019, 0, 1).toISOString();

let events = await gapi.client.calendar.events.list({
  calendarId: 'calendar_email@gmail.com',
  timeMin: fetchTimeLimit,
  showDeleted: false,
  singleEvents: true,
  maxResults: 300,
  orderBy: 'startTime'
})
.then(response => {  ........etc
10
задан Stuart Matheson 16 January 2009 в 04:21
поделиться

2 ответа

Я думаю Пул потоков. QueueUserWorkItem - то, что Вы ищете. С добавлением лямбд и анонимных типов, это может быть действительно просто:

var request = new { url = externalServerUrl, input = urlEncodedUserInput };
ThreadPool.QueueUserWorkItem(
    (data) =>
    {
         httpRequest = WebRequest.Create(data.url);

         httpRequest.Method = "POST";
         httpRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8";

         bytedata = Encoding.UTF8.GetBytes(data.input);
         httpRequest.ContentLength = bytedata.Length;

         requestStream = httpRequest.GetRequestStream();
         requestStream.Write(bytedata, 0, bytedata.Length);
         requestStream.Close();
         //and so on
     }, request);
7
ответ дан 4 December 2019 в 02:52
поделиться

Единственный способ, которым я могу представить, чтобы вы быстро ответили на другой запрос, - это открыть страницу, которую вы публикуете, для открытия потока с помощью ThreadPool.QueueUserWorkItem, чтобы основной поток завершает ответ до того, как завершится трудоемкая работа. Вы должны знать, что после выхода из основного потока у вас не будет доступа к HttpContext, что означает отсутствие кеширования, серверных переменных и т. Д. Также общие диски не будут работать, если вы не олицетворяете пользователя с разрешениями в новом потоке. Обсуждения хороши, но есть на что обратить внимание.

0
ответ дан 4 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: