使用jQuery的ASP.NET MVC异步文件上载
我用过上传一个文件 它可以很好地处理单个/多个文件 但当我尝试上传大小为90到100MB的大文件时,它会阻止所有其他ajax调用 在上传如此大的文件时,如果我最小化了窗口并且试图访问其他页面,所有ajax调用都将在队列中等待,直到上传完成 文件上传没有任何问题,我可以上传高达2GB的文件。但在上传完成之前,我无法访问我网站的任何其他功能 我如何解决这个问题 我想强制这个上传过程异步工作,让我访问我网站的所有其他页面/功能使用jQuery的ASP.NET MVC异步文件上载,jquery,asp.net-mvc-3,Jquery,Asp.net Mvc 3,我用过上传一个文件 它可以很好地处理单个/多个文件 但当我尝试上传大小为90到100MB的大文件时,它会阻止所有其他ajax调用 在上传如此大的文件时,如果我最小化了窗口并且试图访问其他页面,所有ajax调用都将在队列中等待,直到上传完成 文件上传没有任何问题,我可以上传高达2GB的文件。但在上传完成之前,我无法访问我网站的任何其他功能 我如何解决这个问题 我想强制这个上传过程异步工作,让我访问我网站的所有其他页面/功能 是否有任何其他选项/插件可供我用于此目的(无Flash)?如果您在控制器内
是否有任何其他选项/插件可供我用于此目的(无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”对此声明类型无效。它仅对“类”声明有效。对,您必须将此属性放在控制器上。我会更新我的答案。不久前我经历过类似的事情: