Rules to Better IIS

Hold on a second! How would you like to view this content?
Just the title! A brief blurb! Gimme everything!
  1. Do you ensure your application pool is always running?

    ​Do users complain that at times their web application appears to be slow to run at times. The issue can be related to after IIS application pool recycles/reboots/crashes and the application pools are not automatically loaded back into into memory e.g. The first user in the morning complains about excessive load times for their web application.

    As per IIS 8 What's new – Website settings you can use the Application Initialization feature to alleviate this behaviour. If this setting is not enabled, then IIS has default settings to spin down the application and release it from memory when it has been idle for 20 minutes.

    When you set the startMode property of your application pool to AlwaysRunning a worker process is spawned as soon as IIS starts up and does not wait for the first user request. But this does not mean the web application is initialized.​

    When you set preloadEnabled to true, IIS will simulate a user request to the default page (can be changed with initializationPage metabase setting) of the website/virdir so that the application initializes. The request is not logged in the IIS logs.​

    IIS 8 configuration:

    The feature is built-in to IIS 8

    1. Open Internet Information Services (IIS)
    2. Browse to the website in question
    3. Open Advanced settings
      Figure: IIS
    4. Change the “start mode” to “Always running”
      Figure: Start mode
    5. ​Change Preload Enabled to True
      Figure: Preload setting

    Instructions below for IIS 7.5:

    1. On the application server install http://www.iis.net/downloads/microsoft/application-initialization or it can be installed using the Web Platform installer
    2. Open Internet Information Services (IIS)
    3. Select the server 
    4. Scroll down and select Configuration Editor
      Figure: IIS
    5. From the Section menu select system.applicationHost / applicationPools
      Figure: Configuration editor
    6. Double click the “…” to the right of (Collection)
    7. Find the Application Pool CFT is running on (it could be ComplyFirstTime or DefaultAppPool)
    8. In the Properties window, scroll down and select startMode, choose AlwaysRunning
      Figure: Set "start Mode"
    9. On the top right select Apply

    Alternative Instructions for IIS 7.5:


    1. ​​​There is a setting that has to be enabled in the applicationhost.config file which contains all of the top level configuration settings that IIS uses. This file is called appp​located at c:\windows\system32\inetsvr\config on a standard install of IIS.

      I recommend making a backup of this file before continuing. You can use any text editor to update this file. Search for and locate the section named <applicationPools>. Within this section, you will see your application listed in this format:

      <add name=”Application Pool Name” managedRuntimeVersion=”v4.0″ />​

    2. ​​add the Always Running mode by adding ​startMode="AlwaysRunning"​

      <add name=”Application Pool Name” managedRuntimeVersion=”v4.0″ startMode="AlwaysRunning"
      ​ />​​

    3. Save this file and perform an IISReset so that the change is read into the running memory of the IIS server.​
  2. Do you know the standard procedure to troubleshoot if a website is down?

    ​When a site is down, you have to troubleshoot the problem. During troubleshooting, you might need to restart the IIS services. Here're several steps you can follow.​

    1. Restart the website
    2. If step 1 doesn't work, try to recycle the application pool  of the site
    3. If step 2 doesn't work, try to restart IIS
    4. If step 3 doesn't work either, then reboot the web server machine (step 3 or step 4 is a severe action. You should get the approval of network administrators or ask them to do this)
    5. If the site is still not working, turn on the maintenance page and then try to reproduce the problem on the testing site. DO NOT connect your testing site to the production database. If you need the production database, make a copy of it and restore it to your testing machine.

    Still not fixed? Escalate the issue. Please refer to SSW.

  3. Do you use URL Rewrite to redirect HTTP to HTTPS?

    ​Using IIS URL Rewrite Module, Web administrators can easily set up rules to define URL rewriting behavior based on HTTP headers, HTTP response or request headers, IIS server variables, and programmatic rules.​​​ HTTP to HTTPS redirect helps boost your Google site ranking as well as adding enforcing SSL security.

    ​First you must download the IIS URL Rewrite module from Web Platform Component Installer. Ensure that a valid SSL Certificate is installed in IIS Server​. 

    1. Open URL Rewrite and begin with Add Rule(s) | Blank rule (Inbound rules)
    2. Name the rule "HTTP to HTTPS redirect"
    3. Add Pattern ​(.*)
    ​4. Add Conditions
    ​- Condition input: ​{HTTPS}
    Pattern: off
    ​5. Add Action
    - Action type: Redirect
    - Action Properties: https://{HTTP_HOST}/{R:1}
    - Redirect type: Found (302)
    ​6. Apply | Back to Rules

    Designing border protection. 
    Figure: HTTP to HTTPS redirect using IIS URL Rewrite module