嘗試下載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