It keeps the site "alive", when:
- The .NET process recycles its resources automatically
- The web.config file is changed
- A new .dll is introduced or a change of an existing .dll is made in the /bin
directory
It does not keep the site "alive" when:
- IIS worker processes are shut down, either gracefully or not
Note:
According to Microsoft: "The [IIS] worker process is subject to a feature named process recycling. Process recycling consists in the aspnet_isapi ability of automatically starting a new process when the existing one is consuming too much memory, responds too slowly, or just hangs. When this happens, new requests are serviced by the new instance, which becomes the new active process. However, all the requests assigned to the old process remain pending. When the old process has finished with pending requests and enters idle state, it is terminated. If the worker process crashes, or in anyway stops processing the requests, all pending requests are reassigned to a new process."
So, under some, but not all circumstances, when your aspnet_wp.exe or w3wp.exe is recycled or killed, the aspnet_isapi automatocally starts a new process, and that should explain why on occasion Application_End is not fired. As a consequence of this behavior, sometimes the first-hit slowness will remain. The frequency of such occurrances depend on your Internet Host settings and memory capacity.
- When the first request is made, a pool of HttpApplication instances is
created and the Application_Start event is raised.
- The HttpApplication instances process the first and subsequent requests.
- Periodically, the HttpApplication pool instances are disposed of by the .NET
runtime, and/or, the .NET runtime releases its application resources, causing
the disposal of the HttpApplication pool
- In either case, when the last HttpApplication instance is disposed of, the
Application_End event is invoked
- Just before the Application_End event is called (technically, this will
happen every time an HttpApplication instance is disposed of), Open-KeepAlive
will make a request to a .aspx page designated in the web.config file, thus
reinitiating the HttpApplication pool
- As a result, the initial delay that is the natural consequence of a page
request after recycling, will not occur. Open-KeepAlive will have already made
that request automatically
There are a number of factors that cause the Application_End
event:
- Machine.Config settings, may dictate that the HttpApplication process be
recycled at regular
intervals or when the appropriate memory conditions are
present (see machine.config's processModel tag).
- web.config changes.
- .dll changes
see setup example
Setup is very simple and may only require a minute.
-
Copy the KeepAlive-Server .dll in your application's /bin directory
-
Give r/w access to the ASPNET (win2k) or Network Services (win2003) to the folder where Log files will be stored
-
Make a few entries in your web.config as shown in the example link
see license agreement
Licenses are per Domain. Simply put, you buy KeepAlive-Server, and you can use it on any page that is invoked with the same base url.
Please see the full License Agreement in the link above.
buy KeepAlive-Server
Price: 5.00€ (EUR)
Upon confirmation of your payment (it's usually immediate), you will be able to download
and use KeepAlive-Server according to the license agreement above.
We use PayPal for transaction processing. You do not need to have a PayPal account
in order to purchase this product. PayPal allows you to use your Credit Card like any other
credit card processing provider.