Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery的ASP.NET MVC异步文件上载_Jquery_Asp.net Mvc 3 - Fatal编程技术网

使用jQuery的ASP.NET MVC异步文件上载

使用jQuery的ASP.NET MVC异步文件上载,jquery,asp.net-mvc-3,Jquery,Asp.net Mvc 3,我用过上传一个文件 它可以很好地处理单个/多个文件 但当我尝试上传大小为90到100MB的大文件时,它会阻止所有其他ajax调用 在上传如此大的文件时,如果我最小化了窗口并且试图访问其他页面,所有ajax调用都将在队列中等待,直到上传完成 文件上传没有任何问题,我可以上传高达2GB的文件。但在上传完成之前,我无法访问我网站的任何其他功能 我如何解决这个问题 我想强制这个上传过程异步工作,让我访问我网站的所有其他页面/功能 是否有任何其他选项/插件可供我用于此目的(无Flash)?如果您在控制器内

我用过上传一个文件

它可以很好地处理单个/多个文件

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

在上传如此大的文件时,如果我最小化了窗口并且试图访问其他页面,所有ajax调用都将在队列中等待,直到上传完成

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

我如何解决这个问题

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


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

如果您在控制器内使用ASP.NET会话,这是正常和预期的行为。这是故意的。ASP.NET会话不是线程安全的,如果您试图触发来自同一会话的并行请求,ASP.NET将简单地阻止并按顺序执行这两个请求

如果不希望出现这种行为,则必须禁用包含要上载到的操作的控制器的会话。这可以通过使用
SessionState
属性对其进行修饰来实现:

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

    [HttpPost]
    public ActionResult Upload(MyViewModel model)
    {
        ...
    }
}

通过这样做,我们如何保护该操作?通过使用表单身份验证和
[Authorize]
属性,这是在ASP.NET MVC中保护某些内容的标准方法。如果我放置SessionState属性error 22,则获取错误属性“SessionState”对此声明类型无效。它仅对“类”声明有效。对,您必须将此属性放在控制器上。我会更新我的答案。不久前我经历过类似的事情: