Хотя, вы можете сделать это, как правило, не рекомендуется создавать долгосрочную задачу в ASP.NET, особенно если это фоновые задачи.
Фил Хаак имеет большую статью по этому поводу - http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/
Вот еще одна хорошая статья на эту тему - http://blog.stephencleary.com/2012/12/returning-early-from-aspnet-requests.html
Вы можете рассмотреть такие вещи, как сообщение шины для этого. Вы можете также рассмотреть простую таблицу TaskQueue в базе данных, к которой ваше веб-приложение будет вставлять запись, соответствующую вашей задаче, с статусом «Ожидание». Затем вы можете получить фоновый сервис (например, службу Windows), который читает «Ожидающие» задачи и маркирует их как «InProgress» во время обработки и «Завершить», когда это будет сделано. Таким образом, в то время как задача «Ожидание», вы можете заставить пользователя отменить задачу из пользовательского интерфейса, который просто удалит запись «Ожидание» из базы данных.
Другой вариант заключается в использовании такого решения - http://hangfire.io/