2

我已经使用 这个 jQuery 插件来上传文件。

它适用于单个/多个文件。

但是当我尝试上传 90 到 100 MB 的大文件时,它会阻止所有其他 ajax 调用。

如果我已最小化窗口并尝试访问其他页面,则在上传如此大的文件时,所有 ajax 调用都将排队等待上传完成。

文件上传没有任何问题,我可以上传最大 2 GB 的文件。但在上传完成之前,我无法访问我网站的任何其他功能。

我该如何解决这个问题?

我想强制这个上传过程异步工作,让我访问我网站的所有其他页面/功能。

是否有任何其他可用的选项/插件可用于此目的(不带 Flash)?

4

1 回答 1

3

如果您在控制器中使用 ASP.NET 会话,这是正常和预期的行为。这是设计使然。ASP.NET 会话不是线程安全的,如果您尝试从同一会话触发并行请求,ASP.NET 将简单地阻塞并按顺序执行这 2 个请求。

如果您不希望这种行为,您将不得不禁用包含您要上传到的操作的控制器的会话。这可以通过使用SessionState属性装饰它来完成:

[SessionState(SessionStateBehavior.Disabled)]
public class SomeController: Controller
{
    // You cannot use Session in this controller

    [HttpPost]
    public ActionResult Upload(MyViewModel model)
    {
        ...
    }
}
于 2013-03-01T07:24:33.823 回答