【ASP.NET Core】应用脱机文件 (app_offline.htm)

文章目录

jenkins进行CI失败是可能app_offline.htm不会被自动删除导致ASP.NET Core应用异常,发布成功后则需手动删除该文件

概述

在很多情况下,需要在对相关组件(如数据库或 Web 服务)进行更改时使 Web 应用程序脱机。 通常,在 IIS 和 ASP.NET 中,可以通过将名为 App_offline.htm 的文件放置在 IIS 网站或 Web 应用程序的根文件夹中来实现此目的。 App_offline.htm文件是标准 HTML 文件,通常包含一条简单的消息,告知用户由于维护而暂时无法使用站点。 虽然 App_offline.htm 文件存在于网站的根文件夹中,但 IIS 会自动将任何请求重定向到该文件。 完成更新后,将删除 App_offline.htm 文件,网站将照常恢复处理请求。

如果在应用的根目录中检测到名为"app_offline.htm"的文件,ASP.NET Core 模块将尝试正常关闭应用并停止处理传入请求。 如果应用在 shutdownTimeLimit 中定义的秒数之后仍在运行,ASP.NET Core 模块将停止正在运行的进程。

存在 app_offline.htm 文件时,ASP.NET Core 模块会通过发送回 app_offline.htm 文件的内容来响应请求。 app_offline.htm 必须小于 4 GB。 删除 app_offline.htm 文件后,下一个请求将启动应用。

使用进程外托管模型时,如果有已打开的连接,则应用可能不会立即关闭。 例如,WebSocket 连接可能会延迟应用关闭。

锁定的部署文件

如果应用正在运行,部署文件夹中的文件会被锁定。 在部署期间,无法覆盖已锁定的文件。

app_offline.htm 是释放锁定文件的主要机制。 app_offline.htm 供 Web 部署用于正确地停止和启动应用。

可以手动将 app_offline.htm 用于启动和停止应用(需要 PowerShell 5 或更高版本):

powershell 复制代码
$pathToApp = '{PATH TO APP}'


New-Item -Path $pathToApp -Name "app_offline.htm" -ItemType "file"

# Provide script commands here to deploy the app

Remove-Item -Path $pathToApp\app_offline.htm

在上述 PowerShell 脚本中:

  • 占位符 {PATH TO APP} 是指向应用的路径。
  • New-Item 命令停止应用池。
  • Remove-Item 命令启动应用池。
  • 开发人员提供 New-Item 命令和 Remove-Item 命令之间的命令来部署应用。

还可以通过在服务器上的 IIS 管理器中手动停止应用池来解锁文件。 使用 IIS 管理器停止和重新启动应用池时,请勿使用 app_offline.htm 文件。

来源

应用脱机文件 (app_offline.htm)
使用 Web 部署使 Web 应用程序脱机

相关推荐
Adolf_19931 小时前
Flask-JWT-Extended登录验证, 不用自定义
后端·python·flask
叫我:松哥1 小时前
基于Python flask的医院管理学院,医生能够增加/删除/修改/删除病人的数据信息,有可视化分析
javascript·后端·python·mysql·信息可视化·flask·bootstrap
海里真的有鱼1 小时前
Spring Boot 项目中整合 RabbitMQ,使用死信队列(Dead Letter Exchange, DLX)实现延迟队列功能
开发语言·后端·rabbitmq
工业甲酰苯胺1 小时前
Spring Boot 整合 MyBatis 的详细步骤(两种方式)
spring boot·后端·mybatis
新知图书2 小时前
Rust编程的作用域与所有权
开发语言·后端·rust
wn5313 小时前
【Go - 类型断言】
服务器·开发语言·后端·golang
希冀1233 小时前
【操作系统】1.2操作系统的发展与分类
后端
GoppViper4 小时前
golang学习笔记29——golang 中如何将 GitHub 最新提交的版本设置为 v1.0.0
笔记·git·后端·学习·golang·github·源代码管理
爱上语文5 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
serve the people5 小时前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端