在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,Func1 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)
如果有人有任何解决方案,请给我。
谢谢
答案 0 :(得分:0)
尝试使用内存流而不是写入响应:
using (var stream = new MemoryStream())
{
zip.Save(stream);
return File(stream.ToArray(), "plain/zip", "abc.zip");
}
此外,我删除了var rept = reports.First();
行,因为我发现您发布的代码段没有任何相关性。