Iis

如何讓 IIS7 釋放鎖定的文件?

  • August 7, 2015

在我們的生產建構過程中,根目錄中的一個非常大(10 兆字節)的靜態內容文件有時會被 IIS 鎖定,並且無法被清理任務刪除。這可能是因為它當時正在積極地服務於一個或多個客戶。

在清理之前,建構過程會停止網站

c:\Windows\System32\inetsrv\appcmd.exe stop site http://oursite.com

但是,這不會釋放文件 - 我們必須重新啟動 IIS 才能讓程序放棄其鎖定。

appcmd.exe允許您完全關閉 IIS;我們不想這樣做!

有沒有其他方法可以讓 IIS 在不重新啟動 IIS 的情況下釋放鎖定的文件?簡單地停止和啟動單個網站絕對不能釋放文件鎖定。

有一些工具,例如 Sysinternal 的 Process Explorer,可以找到並強制關閉文件句柄,但是執行此操作後應用程序(包括您的,在本例中為 IIS)的狀態和行為是未定義的。有些人不在乎,有些人會出錯,有些人會嚴重崩潰。

正確的解決方案是中斷並允許 IIS 乾淨地釋放鎖並自行清理以保持伺服器穩定性。如果無法做到這一點,您可以在同一個盒子上創建另一個站點,或者設置一個包含新內容的新盒子,然後移動域名/IP 以“促進”新內容投入生產。

引用自:https://serverfault.com/questions/6756