mvc.net控制器中的异常

时间:2010-08-13 08:01:01

标签: asp.net-mvc

在mvc .net c#中,我在基本控制器中加载了OnException操作

在控制器操作中,我使用Ionic.Zip.dll生成了zip文件

这个代码就像

foreach (var file in filesToarchive)
{
    zip.AddFile(@file.FilePath);
}

zip.Save(Response.OutputStream);
var rept = reports.First();
return File(Response.OutputStream, "plain/zip", "abc.zip");

下载文件时,它会在基本控制器

中的OnException操作中抛出异常

例外是:

  

System.Web.HttpResponseStream.Read(字节[]   缓冲区,Int32偏移量,Int32计数)
  在   System.Web.Mvc.FileStreamResult.WriteFile(HttpResponseBase   回应)   System.Web.Mvc.FileResult.ExecuteResult(ControllerContext   上下文)   System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext   controllerContext,ActionResult   actionResult)at   System.Web.Mvc.ControllerActionInvoker&LT;&GT; c__DisplayClass14.b__11()   在   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter   filter,ResultExecutingContext   preContext,Func 1 continuation) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass14.<>c__DisplayClass16.<InvokeActionResultWithFilters>b__13() at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList 1个过滤器,   ActionResult actionResult)at   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext   controllerContext,String actionName)

如果有人有任何解决方案,请给我。

谢谢

1 个答案:

答案 0 :(得分:0)

尝试使用内存流而不是写入响应:

using (var stream = new MemoryStream())
{
    zip.Save(stream);
    return File(stream.ToArray(), "plain/zip", "abc.zip");
}

此外,我删除了var rept = reports.First();行,因为我发现您发布的代码段没有任何相关性。