asp.net 2.0 Error:0x8007000e,存儲裝置空間不足

a95470000 2009-03-19 11:07:34
ICSharpCode.SharpZipLib.dll
這個組件開發的一個壓縮程序
就是在線把服務器上的多個文件壓縮成一個

要壓縮的文件最大的有700Mb﹐為了避免內存被耗光﹐我是1M,1M的向壓縮包里放的

但壓縮大文件還是有問題
"asp.net 2.0 Error:0x8007000e,存儲裝置空間不足
要重起w3wp.exe進程才能正常工作"


感覺是內存泄露﹐但程序中該釋放資源的都釋放了

請高手幫忙看看﹐高分答謝﹗﹗

主要代碼如下:

zipoutputstream = new ZipOutputStream(File.Create(this.zipfilecreatename));
zipoutputstream.SetLevel(this.ziplevel);
Crc32 crc = new Crc32();
foreach (DictionaryEntry item in fileList)
{
fs = File.OpenRead(item.Key.ToString());

long pai = 1024 * 1024 * 1;

long forint = fs.Length / pai;

if (fs.Length % pai > 0)
{
forint = forint + 1;
}
else
{
if (fs.Length / pai == 0)
{
forint = forint + 1;
}
}

byte[] buffer = null;

char[] opt ={ '\\' };
//ZipEntry entry = new ZipEntry(item.Key.ToString().Split(opt)[item.Key.ToString().Split(opt).Length - 2] + "\\" + item.Key.ToString().Split(opt)[item.Key.ToString().Split(opt).Length - 1]);
ZipEntry entry = new ZipEntry(this.ZFolderNM + "\\" + item.Key.ToString().Split(opt)[item.Key.ToString().Split(opt).Length - 1]);
entry.DateTime = (DateTime)item.Value;
entry.Size = fs.Length;
zipoutputstream.PutNextEntry(entry);

for (int i = 1; i <= forint; i++)
{

if (pai * i < fs.Length)
{
buffer = new byte[pai];
fs.Seek(pai * (i - 1), SeekOrigin.Begin);
}
else
{
if (fs.Length < pai)
{
buffer = new byte[fs.Length];
}
else
{
buffer = new byte[fs.Length - pai * (i - 1)];
fs.Seek(pai * (i - 1), SeekOrigin.Begin);
}
}

fs.Read(buffer, 0, buffer.Length);
crc.Reset();
crc.Update(buffer);
// entry.Crc = crc.Value;

zipoutputstream.Write(buffer, 0, buffer.Length);
zipoutputstream.Flush();
}

fs.Close();

}
zipoutputstream.Finish();
zipoutputstream.Close();
zipoutputstream.Dispose();
fs.Dispose();


string upSQL = "UPDATE zip_data SET zip_status='2',mod_dt=sysdate WHERE data_id = " + this.d_ID;
oh.ExecuteSql(upSQL);
FilesList.Clear();
fileList.Clear();
oh.cnClose();
oh = null;
return zipoutputstream.IsFinished.ToString();

...全文
338 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
浮生若梦丶 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 avon520 的回复:]
应该是内存空间不足

检查代码看哪里没有释放资源
[/Quote]
阿云ivan 2009-03-19
  • 打赏
  • 举报
回复
应该是内存空间不足

检查代码看哪里没有释放资源
德仔 2009-03-19
  • 打赏
  • 举报
回复
是不是你硬盘不够装了,他不是提示你资源不足么。
a95470000 2009-03-19
  • 打赏
  • 举报
回复
5Gb的內存﹐2TB
的硬盤﹐所以不是硬件的問題﹐我自己看代碼﹐都該釋放的地方都釋放了﹐壓縮小文件沒問題
不知道這個免費的dll本身有沒有漏洞

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧