- Published on
How to Show a Maintenance Page in Azure App Service During Deployment
- Authors
- Name
- Jeevan Wijerathna
- @iamjeevanvj
Problem
When deploying to Azure App Service, users may see broken pages or errors during the deployment process. There is no built-in mechanism to show a maintenance page automatically during deployments.
Example
You need to deploy updates to your web application hosted in Azure App Service without exposing users to a partially deployed or non-functional website.
Solution
Azure App Service supports a special file named
app_offline.htm
<!-- app_offline.htm --> <!DOCTYPE html> <html> <head> <title>Maintenance</title> <style> body { font-family: Arial, sans-serif; text-align: center; padding: 50px; line-height: 1.6; } h1 { color: #0078d4; } </style> </head> <body> <h1>We'll be back soon!</h1> <p>We're currently performing scheduled maintenance. Please check back later.</p> </body> </html>
Deploying app_offline.htm
- Upload to your web root directory (
app_offline.htm
) before deployment/home/site/wwwroot
- Deploy your application
- Remove when the deployment is complete
app_offline.htm
You can do this manually via Kudu (Advanced Tools) or using Azure CLI:
# Connect to your App Service az webapp create-remote-connection --resource-group <RG> --name <AppName> # Then use SFTP to upload the file
Automating in CI/CD Pipelines
In Azure DevOps, you can use the built-in flag in the App Service deployment task:
- task: AzureRmWebAppDeployment@4 inputs: ConnectionType: 'AzureRM' azureSubscription: '<Your Subscription>' appType: 'webApp' WebAppName: '<AppName>' packageForLinux: '$(System.DefaultWorkingDirectory)/drop/*.zip' TakeAppOfflineFlag: true
Result
When deploying with
app_offline.htm
- All users will see the maintenance page
- Your application will be safely shut down during deployment
- Once deployment completes and the file is removed, the app automatically restarts
For zero-downtime deployments in production environments, consider using Blue-Green/Canary/Deployment Slots instead of the
app_offline.htm
Happy Coding :)