好的,所以我们在 IIS 中有一个 CMS 站点,在 ASP.NET 4.0 上运行。
用户想要更新站点上的一些图像,但由于它们最近已被提供,IIS 为它们打开了一个句柄,锁定了文件。这会导致用户在尝试上传文件的更新版本时收到以下错误:
The process cannot access the file 'X:\inetpub\wwwroot\sitename\Images\Banner\Temp\5.jpg' because it is being used by another process.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IO.IOException: The process cannot access the file 'X:\inetpub\wwwroot\sitename\Images\Banner\Temp\5.jpg' because it is being used by another process.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[IOException: The process cannot access the file 'X:\inetpub\wwwroot\sitename\Images\Banner\Temp\5.jpg' because it is being used by another process.]
System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +14328663
System.IO.File.InternalDelete(String path, Boolean checkHost) +14293114
Admin_Settings_EditHomePageBanner.btnSave_Click(Object sender, ImageClickEventArgs e) +1109
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +134
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +204
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3804
有什么方法可以在 ASP.NET 代码中以编程方式告诉 IIS 释放它对文件的缓存句柄,以便可以更新它?显然,回收整个 IIS 进程在这里并不是一个真正可行的方法。