如何通过站点更新IIS上的站点中的文件?

时间:2012-11-28 17:14:58

标签: asp.net file-upload content-management-system iis-7.5 filelock

好的,我们在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进程并不是一种可行的方法。

2 个答案:

答案 0 :(得分:1)

兄弟,我认为你没有正确诊断出这个问题。 IIS从不以这种方式保留文件,我很确定情况并非如此。

您是否曾在代码中使用过这些图像,比如使用.Net的Bitmap类修改/显示它们?我认为你自己的代码阻碍了这些图像。如果您可以在此处粘贴代码,我可能会提供任何帮助。

答案 1 :(得分:0)

重新启动是可用的最佳和最差选项。你可以通过部署更新的global.asax

再试一次