Я реализовал простой загрузчик PDF в ASP.NET MVC, и мне нужно обработать загруженный документ. Поскольку обработка может занять некоторое время, я хочу, чтобы это было сделано в фоновом режиме. Рабочий процесс примерно такой: Я хочу, чтобы пользователь загружал документ, и когда документ сохраняется в базе данных, он должен иметь возможность делать другие вещи на веб-сайте, включая загрузку новых документов. Пользователь не должен ничего знать о обработке в фоновом режиме.Запуск фоновой задачи ASP.NET MVC 4.5
Моя реализация выглядит так:
[HttpPost]
public async virtual Task<ActionResult> Confirm(string author, string title)
{
//...
previousDocumentIsProcessing = true;
await InvokeDocumentProcessor(_document.Path, _document.DocumentID);
previousDocumentIsProcessing = false;
return View("Success");
}
Проблема заключается в том, что вид «Успех», что отображается после того, как обработка выполняется. Пользователи могут щелкнуть и сделать другие вещи, так как операция асинхронна, но то, что я хочу создать фоновый процесс, запустите его и сразу отобразите «Успех». Обработка данных не должна беспокоить пользователя.
Как я могу это достичь? Я пробовал работать с фоновым рабочим, но это не сработало (я получил сообщение о том, что процесс асинхронности не может быть запущен в этой точке).
Я уверен, что пользователь не должен знать о обработке, так как все, что я делаю, извлекая содержимое PDF (дословно) и сохранить его в чтобы сделать загруженные документы доступными для поиска. Решение на Windows Azure звучит очень хорошо, однако это простой университетский проект, и использование Windows Azure не является вариантом. Я рассмотрю «неправильное» решение и вернусь к вам. Спасибо за ответ :) – mobearette
У вас может быть приложение Windows или консольное приложение, выполняющее ту же роль, что и роль рабочего Azure. Стивен просто предложил на реализацию шаблона. –
Правильно. Примеры Лазури были просто примерами. Вы также можете использовать (соответственно): локальную файловую систему, MSMQ (или локальную базу данных) и службу Win32. –