尝试下载zip文件时发生了非常奇怪的错误,并且在运行中生成。 在某些客户端计算机上一切正常,文件downlading完美,对他人有服务器异常(我尝试使用不同的浏览器进行测试):文件下载时出现ASP.NET奇怪的服务器错误
消息: 对象未设置为一个对象 堆栈跟踪的一个实例参考: вASP.development_detail_aspx .__ RenderContent1(HtmlTextWriter的__w,控制parameterContainer)вSystem.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter的作家,ICollection的儿童)вSystem.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter的作家,ICollection的儿童)в系统.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)在System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter输出)中System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer)在系统中m.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer,ICollection children)System.Web.UI.Page.Render(HtmlTextWriter writer)在System中。 Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
我的代码在asp:ImageButton的OnClick事件。服务器是IIS 7.5:
...
using (MemoryStream output = new MemoryStream())
{
using (ZipOutputStream s = new ZipOutputStream(output))
{
s.SetLevel(5); // 0 - store only to 9 - means best compression
byte[] buffer = new byte[4096];
foreach (var file in devFiles)
{
if (file.PhisicalName != "")
{
ZipEntry entry = new ZipEntry(file.RealName);
s.PutNextEntry(entry);
using (FileStream streamer = File.OpenRead(HttpContext.Current.Server.MapPath(file.PhisicalName)))
{
int sourceBytes;
do
{
sourceBytes = streamer.Read(buffer, 0, buffer.Length);
s.Write(buffer, 0, sourceBytes);
}
while (sourceBytes > 0);
}
}
}
s.Finish();
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ContentType = "application/octet-stream";
response.AppendHeader("Content-Disposition", "attachment; filename=doc.zip");
response.AppendHeader("Content-Length", output.Length.ToString());
response.BinaryWrite(output.ToArray());
response.End();
output.Close();
s.Close();
}
输出声明和初始化在哪里? – Lazarus 2010-08-11 11:48:58
压缩文件的大小是多少?由于服务器上没有足够的内存以供w3wp进程加载附加文件 – InSane 2010-08-11 11:58:54
我已经更新了代码,因此我曾经见过类似的情况。该文件的大小约为10M。但它适用于某些客户..在某些不.. – vadimv 2010-08-11 12:23:24