2016-02-13 27 views
0

我有2種方法的控制器。第一種方法應該設置變量並做一些事情。第二種方法(由ajax調用)應該得到這個變量的值。所以,我不能使用TempData和Cache(因爲有2個不同的請求)。如何解決它?使用會話?但是會話在asp.net mvc中默認是禁用的,如果我啓用它,恐怕會出現整個應用程序的意外行爲......全局變量也不被批准(因爲我需要爲具體用戶獲取變量的值)ASP.NET MVC - 請求之間傳遞數據的方式

編輯: 工作流程是:

  1. 客戶jQuery腳本調用上傳方法控制,並通過一個巨大的文件。該方法執行時間很長(即1分鐘,無論如何)。此方法生成文件的唯一名稱並向DB添加記錄(使用此唯一名稱)
  2. 用戶可以取消上傳並單擊'取消'。它調用另一個服務器方法(即取消命名),它應該刪除數據庫中的記錄(通過上傳方法添加)並刪除上傳的文件(或此文件的上傳部分)。

因此,在取消方法中,我需要知道正在上傳的文件的唯一名稱。我必須在任何存儲(例如Redis,DB等)中的上傳方法中存儲此名稱,並在上傳成功後從此存儲中刪除(或者在取消方法中,如果取消被調用)

回答

2

然後我會建議保留該值在該用戶的Cookie中如果數據不敏感。

如果數據很敏感,您需要在服務器的緩存中存儲數據。在那裏你爲每個用戶保留一個記錄,然後在你完成處理後再使用它並丟棄它。當你有一個網站實例時,這很有效。當你不應該看看例如一個redis緩存,SQL服務器,天藍色表格存儲,...

+0

我不能在我的情況下使用cookie。第一種方法不能返回任何東西給客戶端(真的,它正在上傳一個具有取消能力的巨大文件) –

+0

你能解釋一下更詳細的流程嗎? – RoteS

+0

我在主要問題中添加了細節 –

相關問題