2013-05-22 53 views
3

我有以下場景:通過Ajax調用MVC異步操作,啓動任務,在任務完成前發送ajax響應?

我有一個MVC異步控制器有一個上傳操作,它處理一個CSV文件並使用nHibernate將數據保存到數據庫。這是使用

Task<Nacr.Core.Entities.FileLoad.Job>.Factory.StartNew(() => 
     { 
      _fileUploadService.ProcessJob(job); 
     } 
}); 

目前該行動被稱爲thorugh Ajax調用調用,而我等待ProcessJob到發回我給發起Ajax調用響應之前完成。

我使用signalR通知程序集線器通知用戶在文件進度上在UI上填充記錄計數和進度條,這是一種享受。因此,不需要ajax調用等待這個完成,因爲結果在處理期間是可見的。

不過,如果我關閉Ajax調用我已經開始processJob運行後,我收到以下錯誤:

System.ObjectDisposedException: Session is closed! 

這是由於該會話是在溫莎PerWebRequest生活方式註冊的事實,但我的問題是有沒有什麼方法可以在ajax調用有迴應後使用會話?

我的問題的原因是,對於非常大的文件,ajax請求似乎在大約一分鐘後回想一下processJob,可能是由於它已經等待了太久而沒有收到原始請求的響應。

我對這個原來的問題可以在這裏看到: Async Controller Action Re-Called after one minute

+1

您的問題,更是一個城堡溫莎的問題,而不是具體到MVC或nhiberbnate甚至AJAX任何東西。我對Castle-Windsor的瞭解不多,但聽起來你需要配置這個特定的注入來使用一種可自行處理的資源。另外,目前還不清楚你是否真的需要一個異步控制器,因爲如果你立即返回,你並不真正同步任何請求。 –

回答