为什么没有重定向到ASP.NET MVC 4中查看

全部,我有一个保存已发布文件的控制器(请查看下面的代码)。 完成它需要大约20-30分钟。 但是我在保存文件后发现,RedirectToAction不起作用。 显示的IE状态栏:

Waiting for http://......./index. 

顺便说一下,我的会话状态存储在SQL Server中。 超时是300分钟。 我不确定这个问题是否与之前发布的IIS 7应用程序池空闲时间有关系。 虽然它没有重定向到动作,但我发现会话仍然存在。 文件和记录已成功保存。只有问题是它没有重定向。 请帮助我。谢谢。

 [HttpPost] [AcceptButton("Upload")] public ActionResult Upload(UploadPackageModel model) { //after about 20-30 min for 160MB file-upload, runs here. DeployLogModel tempLog = null; try { if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0) { var file = Request.Files[0]; var fileName = Path.GetFileName(file.FileName); string sUploadFullPath = string.Empty; model.ID = Guid.NewGuid();//PK id of Uploaded Package string sUploadFileName = model.ID + Path.GetExtension(file.FileName); model.CreatedBy = DataHelp.LoginAdministrator.ID.ToString(); model.LastUpdatedBy = DataHelp.LoginAdministrator.ID.ToString(); model.PackageSize = Request.Files[0].ContentLength; model.CreatedDate = DateTime.UtcNow; model.LastUpdatedDate = DateTime.UtcNow; model.PackageName = fileName; string rootPath = AppDomain.CurrentDomain.BaseDirectory + "\\" + "DeployPackages\\"; sUploadFullPath = Path.Combine(rootPath, sUploadFileName); model.PackagePath = sUploadFullPath; if (!Directory.Exists(rootPath)) Directory.CreateDirectory(rootPath); file.SaveAs(sUploadFullPath);//Save the uploaded package. model.SavePackInfoIntoDB(model);//Save record to DB } } catch (Exception ex) { Log.Write("-Upload-Package-failed-:\r\n" + ex.Message + "\r\n" + ex.StackTrace); } return RedirectToAction("Index");//does not work. } 

文件和记录已成功保存。只有问题是它没有重定向。

更新:

Web.config httpRuntime设置为:

  

编辑添加索引操作代码:

 public ActionResult Index(int? page) { var db = DbContextHelper.CreateInstance(); //Find all uploaded packages. var packages = db.DeployPackages.OrderByDescending(x => x.CreatedDate).Select(x => new PackageModel { PackageId = x.ID, UploadedBy = x.CreatedBy, Description = x.Description, PackageName = x.PackageName, PackageSize = x.PackageSize, PackagePath = x.PackagePath, UploadTime = x.CreatedDate, VersionName = x.VersionName }).ToList(); int pageSize = ConfigHelper.BigPageSizeNum; int pageNumber = (page ?? 1); return View(packages.ToPagedList(pageNumber, pageSize)); } 

编辑添加Fiddler跟踪信息

 result protocol Host Url 200 http test.cloudapp.net /package/upload 200 http test.cloudapp.net /package/index 

我可以在/package/index的fiddler中看到响应html内容,但浏览器只是冻结在同一页面上( /package/upload )。

我想知道是否有办法用js代码更改windows.location.href,我的想法是成功完成上传操作。 然后输出一些脚本,如经典asp.net页面中的response.write脚本。 js将windows.location.href更改为重定向到/package/index 。 有没有办法在ASP.NET MVC4中实现它?

使用Content(sResultScript, "text/html")输出javascript以重定向索引url。 IE8显示失败的页面,Chrome和Firefox都可以。