Response.Clear();
Response.AddHeader("content-disposition", "filename=" + HttpContext.Current.Server.UrlEncode("批量文件" + DateTime.Now.ToString("D")) + ".zip");
using (ZipFile zip = new ZipFile(System.Text.Encoding.Default))//解决中文乱码问题
{
if (ds.Tables[0].Rows.Count > 0)
{
foreach (DataRow row in ds.Tables[0].Rows)
{
string tempPath = row["FilePath"].ToString().Replace('\\', '/');
string mapPath = Server.MapPath("/Download/" + tempPath);
zip.AddFile(mapPath, "");
}
}
zip.Save(Response.OutputStream);
}
Response.End();
报错:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。
请各位大侠指点指点!~
参考:http://zhidao.baidu.com/question/355814709.html
另外,看看你这个页面是否启动了辅助线程在异步执行,试试在执行Response.End();之前先等待辅助线程执行完再调用。
把 Response.End(); 改为 HttpContext.Current.ApplicationInstance.CompleteRequest(); 这种方法还是不行!~
@RedLaugh: zipFile是你自己封装的吗?里Save面是否启动了辅助线程。
@滴答的雨: 我用的是第三方类库(ionic.zip.dll)
把 Response.End(); 改为
HttpContext.Current.ApplicationInstance.CompleteRequest();
不行啊,调试catch中还是显示:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值
要不试试在Response.End();之前加一句Thread.Join();
看看这样有没有效果.