C# asp.NET控制器似乎没有按正确的顺序执行

C# asp.NET控制器似乎没有按正确的顺序执行,c#,jquery,asp.net,asp.net-mvc-4,C#,Jquery,Asp.net,Asp.net Mvc 4,我正在使用jQuery文件上传插件并将zip文件发布到我的控制器。但在执行顺序上发生了一些我似乎无法理解的事情。当我在顶部设置调试点时,它似乎在我的控制器中到处跳跃,因此,我的代码似乎不像我认为的那样工作 这是我的帖子: $('#fileupload').fileupload({ url: '/FileUpload/Import', add: function (e, data) { var fileSubmit = data.submit()

我正在使用jQuery文件上传插件并将zip文件发布到我的控制器。但在执行顺序上发生了一些我似乎无法理解的事情。当我在顶部设置调试点时,它似乎在我的控制器中到处跳跃,因此,我的代码似乎不像我认为的那样工作

这是我的帖子:

$('#fileupload').fileupload({
    url: '/FileUpload/Import',
    add: function (e, data) {
        var fileSubmit = data.submit()
            .success(function (result, textStatus, fileSubmit) {
                var name = data.files[0].name;
                fileValidation(name, textStatus);

            })
            .error(function (fileSubmit, textStatus, errorThrown) {
                var name = data.files[0].name;
                fileValidation(name, textStatus);
            });           
    },
    done: function (e, data) {
        $.each(data.files, function(index, value){
            if (value.name == "") {
                alert("Error uploading: " + value.name + ". " + failStatus);
            }
            else 
            {
                $('#fileSubmit').show();
            }
        });
    }
});
就像我想的那样,它似乎在发射。它将一次发布一个文件,如Fiddler所示:

asp.NET控制器似乎没有按正确的顺序执行,而是到处反弹。这是我的控制器:

[HttpPost]
public ActionResult Import()
{
    List<ZipContents> fileList = new List<ZipContents>();
    var r = "File successfully uploaded.";

    try
    {         
        if (Session["SESSION_IMPORT_STORAGE"] != null)
        {

            fileList = (List<ZipContents>)Session["SESSION_IMPORT_STORAGE"];
        }

        Stream s = Request.Files[0].InputStream;
        String fn = Request.Files[0].FileName;
        fileList.Add(new ZipContents(s, fn));

        Session["SESSION_IMPORT_STORAGE"] = fileList;

    }
    catch
    {
        r = "An error occurred uploading file(s).";
    }

    return Json(r);
}
[HttpPost]
公共操作结果导入()
{
List fileList=新列表();
var r=“文件已成功上载。”;
尝试
{         
if(会话[“会话导入存储”!=null)
{
文件列表=(列表)会话[“会话导入存储”];
}
Stream s=请求。文件[0]。InputStream;
字符串fn=Request.Files[0]。文件名;
添加(新的ZipContent(s,fn));
会话[“会话导入存储”]=文件列表;
}
抓住
{
r=“上传文件时出错。”;
}
返回Json(r);
}
我的意思是,如果我将调试点设置为:

List<ZipContents> fileList = new List<ZipContents>();
List fileList=newlist();
然后将鼠标悬停在:
String fn=Request.Files[0].FileName上面写着:
“moreXmlFiles.zip”

然后我点击F11,它移动到下一行。然后再次进入
尝试
。然后再次点击
if语句

如果我再次点击F11,它将一直运行到我的原始调试点,当我将鼠标悬停在
String fn=Request.Files[0].FileName再次显示下一个文件名。但是我的代码甚至没有在第一个文件中完成


有人知道这里发生了什么吗?!任何帮助都将不胜感激。谢谢

多个线程正在处理文件。@stuartd-在这种情况下,您建议我怎么做?我建议您只将这些文件保存在HTTP请求中,然后使用后台线程对其进行压缩。@allentranks-我不确定接下来的代码将如何处理。我需要将它们作为列表存储到会话中,因为用户点击一个最终提交,该提交检查他们实际想要处理的文件的最终列表。它位于另一个控制器中。使用SQL会话状态-它将强制序列化调用:)旁注:您可能不希望将文件存储在会话状态(尤其是内存状态)。。。