[英]Call MVC async action through Ajax, start task, send the ajax response before the task completes?
我有以下场景:
我有一个MVC异步控制器,它有一个上传操作,它处理csv文件并使用nHibernate将数据保存到数据库。 这称为使用
Task<Nacr.Core.Entities.FileLoad.Job>.Factory.StartNew(() =>
{
_fileUploadService.ProcessJob(job);
}
});
目前这个动作叫做一个ajax调用,我正在等待ProcessJob完成,然后再发回我对原始ajax调用的响应。
我正在使用signalR通知程序中心向用户通知文件进度,以填充UI上的记录计数和进度条,这是一种享受。 因此,不需要ajax调用等待此操作完成,因为结果在处理期间是可见的。
但是,如果我在启动processJob运行后关闭ajax调用,则会收到以下错误:
System.ObjectDisposedException: Session is closed!
这是因为Session在Windsor注册了PerWebRequest生活方式,但我的问题是,在ajax调用得到响应后,会话是否可以使用?
我的问题的原因是,对于非常大的文件,ajax请求似乎是在大约一分钟后调用processJob,可能是因为它已经等待太长时间没有收到原始请求的响应。
我可以在这里查看我的原始问题: 异步控制器操作一分钟后重新调用
我认为这是因为浏览器没有及时响应MVC操作,因此自动重试。
看看这个相关问题的答案: 当没有收到请求的响应时会发生什么? 我正在看重试
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.