![即使存在 App_Offline.htm,IIS 也会锁定文件](https://linux22.com/image/790349/%E5%8D%B3%E4%BD%BF%E5%AD%98%E5%9C%A8%20App_Offline.htm%EF%BC%8CIIS%20%E4%B9%9F%E4%BC%9A%E9%94%81%E5%AE%9A%E6%96%87%E4%BB%B6.png)
我的托管公司刚刚升级了我的服务器并迁移了我的网站。我在 Visual Studio 中开发,并将网站发布到本地文件夹,然后通过 FTP 上传(如果有任何不同,则使用 FileZilla)。
在旧服务器上,我在每个站点的文件夹_App_Offline.htm
中保存了一个文件wwwroot
。当我上传新版本时,我将其重命名为App_Offline.htm
,这允许 IIS 发布文件,我上传后再将文件重命名。一切正常。
在新服务器上,重命名文件永远不会允许 IIS 发布文件,因此我无法上传更改。我尝试在控制面板中停止该网站,但没有帮助。我尝试停止应用程序池。通常这会有所帮助,但重新启动它几乎总是会失败。它至少需要 15-20 次尝试才能重新启动。
有人对这里可能存在的问题有什么建议吗?我知道没有什么可继续的,但我不确定我还能说什么。以下是一些可能相关的细节...
- Windows Server 2022
- IIS 10
- 该服务器正在运行 Windows FTP
- 所有网站都是 .NET,6 或 7,大部分是 Blazor,但也有一些 Razor 页面
如果我可以提供更多信息,请告知。
谢谢
答案1
奇怪的是,虽然当 IIS 保留这些文件时您无法删除或覆盖它们,但您可以重命名它们,并且网站将继续照常运行。
因此,解决这个问题的一种方法是重命名关键文件(根据我的经验,通常只有主 DLL),然后复制新版本,然后使用 app_offline.htm 技巧重新启动网站。重新启动后,您可以删除(旧的)重命名文件。
实际上,您不能总是立即删除旧文件,但如果您将它们重命名为具有前缀zzz
,那么它们就会被隐藏在文件列表的底部,您可以在下次上传时删除它们。
总体而言,您的时间是相同的,但您无需重命名 app_offline.htm、上传,然后再重命名,而是快速连续地重命名 DLL、上传并重命名 app_offline.htm 两次。这样做的好处是您的停机时间大大减少,基本上,网站停机的时间只限于您重命名 app_offline.htm 并将其重命名为原名所需的时间。
希望有所帮助。