pubxml部署时配置EnableMSDeployAppOffline如何自定义App_Offline.htm内容
IIS Web Deploy 自定义App_Offline.htm 解决方案
Web Deploy 内置的EnableMSDeployAppOffline规则默认仅会生成空白的App_Offline.htm文件触发应用池回收,官方未提供直接配置自定义内容的参数,可通过以下两种方案实现需求:
方案1:自定义MSBuild目标控制离线页生命周期
- 在Web项目根目录创建你自定义好内容的
App_Offline.htm,将文件的「复制到输出目录」属性设置为「如果较新则复制」 - 打开你的.pubxml发布配置文件,删除原有
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>配置,避免规则冲突,再在<Project>根节点下添加如下自定义发布目标:
<Target Name="UploadCustomOfflinePageBeforePublish" BeforeTargets="MSDeployPublish"> <Message Text="上传自定义离线页面至站点根目录" Importance="high" /> <Exec Command=""$(MSDeployPath)\msdeploy.exe" -verb:sync -source:contentPath="$(ProjectDir)App_Offline.htm" -dest:contentPath="$(DeployIisAppPath)/App_Offline.htm",computerName="$(MSDeployServiceURL)/msdeploy.axd?site=$(DeployIisAppPath)",userName="$(UserName)",password="$(Password)",authtype="Basic" -allowUntrusted" /> <!-- 等待2秒确保应用池完成离线操作 --> <Exec Command="ping -n 2 127.0.0.1 > nul" Condition="'$(OS)' == 'Windows_NT'" /> </Target> <Target Name="DeleteOfflinePageAfterPublish" AfterTargets="MSDeployPublish"> <Message Text="部署完成,移除站点离线页面" Importance="high" /> <Exec Command=""$(MSDeployPath)\msdeploy.exe" -verb:delete -dest:contentPath="$(DeployIisAppPath)/App_Offline.htm",computerName="$(MSDeployServiceURL)/msdeploy.axd?site=$(DeployIisAppPath)",userName="$(UserName)",password="$(Password)",authtype="Basic" -allowUntrusted" /> </Target>如果是本地部署无需身份验证,删除dest参数中的userName、password、authtype配置项即可
- 在Web项目根目录创建你自定义好内容的
方案2:直接替换Web Deploy内置离线模板
Web Deploy安装时会自带默认的App_Offline.htm模板文件,默认存放路径为C:\Program Files\IIS\Microsoft Web Deploy V3\App_Offline.htm,直接修改该文件的内容为你需要的自定义HTML即可,后续所有启用了EnableMSDeployAppOffline配置的部署任务都会自动使用该模板生成离线页。
注意该修改会影响当前服务器上所有使用Web Deploy的部署任务,适用于服务器上所有站点统一离线页样式的场景
内容的提问来源于stack exchange,提问作者User987
相关产品推荐
相关产品推荐

