Search code examples
c#.netwebdowntimemaintenance-mode

How to lock down a web application for maintenance without loss of unsaved work?


I have a large web application in ASP .NET (not that the technology matters here) that does not currently have a way to be locked down for maintenance without current users losing their work. Since I have not implemented something like this before, I would like to hear about some of the standard precautions and steps developers take for such an operation.

Here are some of the questions that I can think of:

  • Should each page redirect to a "Site down for maintenance" page or is there a more central way to prevent interaction?
  • How to centralize a scheduled maintenance such that user operations lock down before the site is locked down. Thus preventing loss of unsaved work.

The application is data-driven and implements transaction scopes at the business layer. It does not use load balancing or replication. I may be wrong, but it does not 'feel right' to have the BLL handle this. Any suggestions or links to articles would be appreciated.


Solution

  • One way to make a maintenance page is to use the app_offline.htm feature of IIS. Using this feature you will be able to show the same html page to all your users notifying them about the maintenance.

    There is a nice post here in StackOverflow about it. ASP.NET 2.0 - How to use app_offline.htm.

    Another thing you could do is to notify your users that there is a scheduled maintenance so that they also be aware and stop using the application.

    That all depends on the time you need to upgrade your application. If the upgrade is to upload the new files and take not more that a minute or two, its most likely that your users wont even see it.