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-可能是时候挖掘调试工具来了解发生了什么。