Application Initialization UI for IIS 7.5


IIS Application Initialization for IIS 7.5 enables website administrators to improve the responsiveness of their Web sites by loading the Web applications before the first request arrives. By proactively loading and initializing all the dependencies such as database connections, compilation of ASP.NET code, and loading of modules, IT Professionals can ensure their Web sites are responsive at all times even if their Web sites use a custom request pipeline or if the Application Pool is recycled. While an application is being initialized, IIS can also be configured to return an alternate response such as static content as a placeholder or “splash page” until an application has completed its initialization tasks.

 

> Improved customer experience while the Application is warming up

> Decrease the response time for first requests by pre-loading worker processes

> Increase reliability by pre-loading worker processes when Overlapped Recycling occurs

 

There is no UI available for application initialization release and we have to configure it using appcmd commands. To simplify its usage and to understand its features, I have written a UI module for it.

There are two level of settings that need to be done configure Application Initialization:

1. Application pool level 

 

 2. Website level 

 

Installing the module: 

I have attached the installer for 64 bit and could be used for Windows Server 2008 R2 and Windows 7 x64. 

Prerequisite: Before installing Application initialization UI module from the download in this blog, please install Application Initialization

http://www.iis.net/download/ApplicationInitialization

P.S. I have also attached a sample splash page that could be used while application is initializing. 

 

References: 

Application Initialization for IIS 7.5

http://www.iis.net/download/ApplicationInitialization 

IIS 8.0 Application Initialization

http://learn.iis.net/page.aspx/1089/iis-80-application-initialization/

 

Blogs that helped me write this module:

http://blogs.msdn.com/tess/archive/2008/08/28/creating-a-ui-module-for-iis7-to-watch-current-requests.aspx

http://blogs.msdn.com/b/puneetgupta/archive/2009/08/03/where-is-the-client-certificates-ui-in-iis-7-0.aspx

http://blogs.msdn.com/carlosag/archive/2008/11/10/CreatingSetupProjectForIISusingVisualStudio2008.aspx

ApplicationInitializationInstaller_x64.zip


Comments (16)

  1. Stan says:

    How do I start your UI interface?  The installer only adds a dll in the ApplicationInitializationInstaller folder???

  2. amehrot says:

    hello Stan, you will see the feature in IIS Manager at server level as well as web site level. Make sure you install AppInit module before installing the UI module: http://www.iis.net/…/ApplicationInitialization

  3. Hi Amol,

    Thanks for your efforts, but I was wandering if we can go a bit further: can IIS itself initialize the web site, without that first user interaction? Let me explain: my constraints are I’m using WCF on a web application and I have a singleton object ([ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]) that does a lot of heavy lifting on the first call itself. I need that heavy lifting done every time there is a recycling of any kind in IIS. This is a “Web Service” site, so the splash screen does not do any good in this scenario. I tried the Preload setting only and set the Recycling to 2 minutes in order to test. I follow what is happening in Task Manager then the worker process gets recycled, and there is no “ping” to preload my app. Could you shed some light?

    Thanks!

  4. Also, a bit of spell checking: SkipManagedModlues (sic!)

  5. amehrot says:

    You may still use Initialization page and make a dummy call to your WCF service so that initial heavy lifting is done on this dummy call itself.

    Hope this helps!

  6. Jonathan Oliver says:

    This plugin is awesome.  It works great for root websites, but whenever I try it on sub-application websites (ones living below the root), it bombs and the UI process exits.

  7. I just wanted to let you know that there is an issue with the installation of the IIS Application Initialization Module for IIS 7.5. The installation failed if KB2763973 is installed as it tries to install KB2684600 which is superseded.

    I uninstalled KB2763973 and the installation worked. I am guessing the same issue happens when KB2708585 or KB2723776 or KB2646886-v2 are installed.

    I tested on 2008 R2 but the same happens in Windows 7 probably.

  8. Ken says:

    I've installed the module and it does show the sites and app pools that are currently set, but the drop down menu's aren't populated.

  9. Mike says:

    This GUI is very unstable… there is no other GUI for this??

  10. Niels says:

    Well done – thanks a lot. Worked straight away on my 2008 R2. Used it on a subapplication.

  11. Dmitry says:

    For me also worked great. No issues.

  12. CK says:

    Hi,

    When I select my website in the drop down IISmanager is crashing with eventviewer error Invalid index. Any idea how to get more details?

    IISMANAGER_CRASH

    IIS Manager terminated unexpectedly.

    Exception:System.Runtime.InteropServices.COMException (0x80070585): Invalid index. (Exception from HRESULT: 0x80070585)

      at Microsoft.Web.Administration.Interop.IAppHostElement.GetPropertyByName(String bstrSubName)

      at Microsoft.Web.Administration.ConfigurationElement.GetAttributeValue(String attributeName)

      at ApplicationInitializationUI.AppInit.IsPreLoadEnabled(String websiteName, String applicationName)

      at ApplicationInitializationUI.AppInit.cmbbxApplication_SelectedIndexChanged(Object sender, EventArgs e)

      at System.Windows.Forms.ComboBox.OnSelectedIndexChanged(EventArgs e)

      at System.Windows.Forms.ComboBox.WndProc(Message& m)

      at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

      at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

      at System.Windows.Forms.UnsafeNativeMethods.SendMessage(HandleRef hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)

      at System.Windows.Forms.Control.SendMessage(Int32 msg, IntPtr wparam, IntPtr lparam)

      at System.Windows.Forms.Control.ReflectMessageInternal(IntPtr hWnd, Message& m)

      at System.Windows.Forms.Control.WmCommand(Message& m)

      at System.Windows.Forms.Control.WndProc(Message& m)

      at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

      at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

      at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)

      at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)

      at System.Windows.Forms.Control.WmCommand(Message& m)

      at System.Windows.Forms.Control.WndProc(Message& m)

      at System.Windows.Forms.ComboBox.WndProc(Message& m)

      at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

      at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

      at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)

      at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)

      at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)

      at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)

      at Microsoft.Web.Management.Host.Shell.ShellApplication.Execute(Boolean localDevelopmentMode, Boolean resetPreferences, Boolean resetPreferencesNoLaunch)

    Process:InetMgr

  13. Mark says:

    Nice utility. Well done! Works great for me.

  14. TBoe says:

    I tried Application Initialization for a WCF service based application. I want a WCF service to be called that does the warmup. However, I was not able to get this to work. I followed the intructions provided on the official IIS 8 Application Initialization web site and got the demo app to work. But when I configure my web.config to call my service by nominating a .SVC URL nothing happens (no warmup, no error). The section in my web.config looks like this:

    <applicationInitialization skipManagedModules="true" >

         <add initializationPage="/Service1.svc" />

    </applicationInitialization>

    My IIS seems to call somewhere into the Service1 because when I change the URL to something non-existing I can see an error message isued by IIS in the windows event log.

    So my question is: How do I get things setup for a WCF service? Or putting it in other words: What method of the service class that serves as the code  behind for Service1.svc gets called when I setup a warmup URL pointing to the .SVC? I put trace code into the constructor but that never gets executed.

    Any help will be appreciated.

  15. Sven says:

    Where is the UI pakage for x86 Version?

    Thanks a lot

  16. Alex says:

    Installed this modeule. It works good on some of my environments (Win 2008R2 and Win 7), but on one environment (Win 2008R2) it does not work. All drop downs are empty so I cannot configure application pools and applications.

Skip to main content