Предотвратить IIS от уничтожения задачи до ее завершения
Я создаю библиотеку журналов, в которой все хранится в таблице Azure. Запись в эту таблицу, очевидно, занимает много времени (никогда не более 1 секунды, но это все еще слишком много, чтобы заставить пользователя ждать), поэтому метод Log возвращает экземпляр LogResult, а здесь класс
public class LogResult
{
public string Id { get; set; }
public Task LoggingTask { get; set; }
public LogResult(string id, Task task)
{
Id = id;
LoggingTask = task;
}
}
И вот как заканчивается метод Log
return new LogResult(id, Task.Factory.StartNew(() =>
DoLogInAzure(account, id, exception, request))
);
Предоставить вызывающему абоненту возможность ожидания его завершения (например, если это консольное приложение). Проблема, с которой я сталкиваюсь, заключается в том, что IISshouldn't дождаться его, прежде чем вернуть пользователю ответ ... и если я не жду его, IIS не получитalways выполнить задание Идея состоит в том, чтобы показать пользователю сообщение & quot; ... Если вы обращаетесь к нам, обязательно укажите номер вашей проблемы, XXX & quot; и не заставляйте его ждать, пока запись в журнале не будет записана.
Есть ли способ заставить IIS ждать, пока задача не завершится, даже после того, как она вернула ответ? Я думаю, что мне, возможно, понадобится кодировать службу Windows, которая принимает запрос асинхронно, но похоже, что нужно просто добавить запись в журнал ... особенно, если я могу заставить IIS ждать его.
Спасибо за любые идеи!