我在ASP.NET MVC中實現了一個簡單的PDF上傳器,我需要處理上傳的文檔。由於處理過程可能需要一段時間,我希望這可以在後臺完成。 工作流程如下: 我希望用戶上傳文檔,當文檔保存在數據庫中時,他應該能夠在網站上做其他內容,包括上傳新文檔。用戶不應該知道後臺處理的任何內容。開始後臺任務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輔助角色相同的操作。斯蒂芬只是建議實施該模式。 –
正確。 Azure示例僅是示例。您也可以使用(分別):本地文件系統,MSMQ(或本地數據庫)和Win32服務。 –