Sunday, November 11, 2007

ASP.NET Application Restarts

Application Restarts
Modifying the source code of your Web application will cause ASP.NET to recompile source files into assemblies. When you modify the top-level items in your application, all other assemblies in the application that reference the top-level assemblies are recompiled as well. In addition, modifying, adding, or deleting certain types of files within the application's known folders will cause the application to restart. The following actions will cause an application restart:
  • Adding, modifying, or deleting assemblies from the application's Bin folder.
  • Adding, modifying, or deleting localization resources from the App_GlobalResources or App_LocalResources folders.
  • Adding, modifying, or deleting the application's Global.asax file.
  • Adding, modifying, or deleting source code files in the App_Code directory.
  • Adding, modifying, or deleting Profile configuration.
  • Adding, modifying, or deleting Web service references in the App_WebReferences directory.
  • Adding, modifying, or deleting the application's Web.config file.

When an application restart is required, ASP.NET will serve all pending requests from the existing application domain and the old assemblies before restarting the application domain and loading the new assemblies.

Use Performance monitor

Application recycling is common issue in the newsgroups. Most of the time programmers notice that the session lost due to application recycling but some times just application restart noticed. There are many causes to application recycle, the most common are:

1) Unhandle Exception.
2) Any write to application bin directory.
3) Any change to web.config.
4) Anti-virus program that touch files.
5) One of ProcessModel attribute in machine.config that cause application recycling.
To monitor that behavior as it started it's highly recommended to monitor Use Performance monitor -> ASP.NET -> Application restart counter. Finding high value in that counter might help you to find and fix the problem ad it happened rather then look for it when the application already running.

blog comments powered by Disqus