即使存在 App_Offline.htm,IIS 也会锁定文件

即使存在 App_Offline.htm,IIS 也会锁定文件

我的托管公司刚刚升级了我的服务器并迁移了我的网站。我在 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 并将其重命名为原名所需的时间。

希望有所帮助。

相关内容