C# 为什么在ASP.NET中调用File.Delete()和File.Move()会导致我的工作进程挂起?
当我执行以下代码删除和移动文件时,我的工作进程挂起:C# 为什么在ASP.NET中调用File.Delete()和File.Move()会导致我的工作进程挂起?,c#,asp.net,iis-6,C#,Asp.net,Iis 6,当我执行以下代码删除和移动文件时,我的工作进程挂起: File.Delete(FullSourceFilePath); File.Move(FullTempFilePath, FullSourceFilePath); // update db Data.AdminUpdateFileSizeandBitrate(FileId, SizeInbytes, Bitrate); Response.Redirect("?m=File replaced!"); 文件夹FullSourceFilePath
File.Delete(FullSourceFilePath);
File.Move(FullTempFilePath, FullSourceFilePath);
// update db
Data.AdminUpdateFileSizeandBitrate(FileId, SizeInbytes, Bitrate);
Response.Redirect("?m=File replaced!");
文件夹FullSourceFilePath中包含15000多个文件
上述代码仅在需要移动的文件大于5 MB左右时,才会导致站点挂起此站点。当这个问题出现时,我的工作进程开始消耗内存,我的服务器逐渐瘫痪
唯一的恢复解决方案是发出IISRESET/RESTART命令
我的环境是:
IIS6在Windows 2003 x86 SP2上运行
使用ASP.NET4.0和C编写的网站
据猜测,这里的问题可能是您要将文件移动到的文件夹中有大量文件 辅助进程是否仅挂起在文件上。移动 试着做:
File.Delete(FullSourceFilePath);
File.Copy(FullTempFilePath, FullSourceFilePath);
其他要尝试的事情是从命令行执行相同的操作,看看这是否会导致相同的问题出现
如果是这样的话,那么您的文件系统可能会严重碎片化,并且磁盘正在颠簸
Windows也不能很好地处理大量文件,如果文件可以以任何方式进行分类,例如按ID范围或日期范围,则将其分解为子文件夹
您还可以运行并捕获一个小型转储,以查看瓶颈发生的位置
有一些关于如何使用此工具确定工作进程高内存使用率、崩溃和挂起的原因的优秀文章
谢谢,只需添加更多信息。同样的操作对classic也适用asp@nLL-可能是时候挖掘调试工具来了解发生了什么。