我正在將文件流式傳輸到客戶端進行下載。但它可能發生的文件大小可能真的很大(高達幾GB),因此我不想阻止用戶點擊網頁上的其他按鈕與下載相同的控制器。從閱讀互聯網上,我發現,我可以把它異步使用「異步」和「完成」後綴,這是我的代碼:如何在asp.net mvc 3中使下載動作異步?
public void DownloadAsync(string filename, string Id, string docId)
{
AsyncManager.OutstandingOperations.Increment();
// code to get the file from server and send it to client.
AsyncManager.OutstandingOperations.Decrement();
}
public ActionResult DownloadCompleted()
{
return RedirectToAction("Index");
}
public string OtherAction()
{
// code for this action.
}
當我點擊網頁下載並點擊「OtherAction」按鈕。它仍然同步處理請求。 「OtherAction」只是向用戶返回一個字符串,並不是時間密集型的,這就是爲什麼我沒有使它異步。
我是否需要在.Increment()和.Decrement()操作之間包含一些代碼來包裝代碼以下載「something」內的文件以啓動一個新線程或類似的東西?我無法弄清楚我在這裏失去的其他作品。我從AsyncController繼承控制器。
你需要使用jQuery的AJAX功能和發送陣列叮咬到服務器, 在那裏你可以對其進行處理和發送類似json的客戶 – 2013-07-21 23:14:15
的原因,可能看起來是同步的,因爲大多數瀏覽器只能同時打開兩個連接。 – 2013-08-26 20:26:32