C# asp.NET控制器似乎没有按正确的顺序执行
我正在使用jQuery文件上传插件并将zip文件发布到我的控制器。但在执行顺序上发生了一些我似乎无法理解的事情。当我在顶部设置调试点时,它似乎在我的控制器中到处跳跃,因此,我的代码似乎不像我认为的那样工作 这是我的帖子: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()
$('#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会话状态-它将强制序列化调用:)旁注:您可能不希望将文件存储在会话状态(尤其是内存状态)。。。