Application Request Routing Version 2 Overview

by IIS Team


This section of the documentation applies to Microsoft Application Request Routing Version 2 for IIS 7 and Above.

Microsoft Application Request Routing (ARR) for IIS 7 and above is a proxy-based routing module that forwards HTTP requests to application servers based on HTTP headers, server variables, and load balance algorithms.

ARR Version 2 is an incremental release that includes all of the features from Version 1, and adds support for disk-based cache. More specifically, ARR Version 2 can be used to:


  • ARR Version 1 and ARR Version 2 cannot be installed side-by-side.
  • Previous releases of ARR Version 2 (Beta1, Beta2 and RC) and the ARR Version 2 RTW cannot be installed side-by-side.
  • ARR Version 2 RTW supports upgrading from ARR Version 1 RTW and from ARR Version 2 RC. If any other version of ARR is already installed, uninstall it before proceeding with the ARR Version 2 installation.
  • The minimum supported resolution for IIS Manager is 1024x768.


ARR Version 2 includes the following key features:

  • Disk-based caching — In addition to the kernel memory cache in ARR Version 1, Version 2 adds support for disk-based cache, including support for a secondary network-based drive.
  • Cache hierarchy management — Define and manage relationships between cache nodes, including support for the Cache Array Routing Protocol (CARP).
  • Cache proxy node in CDN/ECN environment — Because ARR is a proxy-based HTTP request routing module with support for disk cache and CARP, ARR can be used as a cache proxy in a CDN/ECN environment.
  • Caching compressed objects — Disk-based cache stores compressed objects so that the objects do not have to be compressed in real time for every request. In addition, ARR gzip compresses objects even if the content server does not respond with gzip content-encoding.
  • Configure Caching with Query String Support in Application Request Routing
  • Browsing cached contents using IIS ManagerBrowse through cached contents across multiple drives in one consolidated graphical view in IIS Manager.
  • Removing cached contentsDelete cached contents by matching URL patterns.
  • Running Scavenger.exe to delete cached content in the secondary drive as a standalone utility.
  • Overriding cache-control directives — Manually override the cache-control directives in the response header to change the cache behavior.
  • Warming up cache nodeProactively warm up your cache node with contents that will be in demand before they are requested. In addition, the contents can be pre-cached selectively only at the parent cache tier.
  • Intelligent byte-range support — ARR converts the byte-range request into manageable segments to increase cache hit/miss ratio without sacrificing response time.
  • Intelligent live request support — ARR is designed to work with Live Smooth Streaming to support live content requests without overloading the live streaming server.
  • Caching while serving response — Caching large content, such as a movie clip, may take some time. ARR Version 2 is capable of caching the content while serving the response immediately.
  • Support for performance counters — The runtime statistics shown in the Monitoring and Management view are accessible as performance counters.


ARR Version 2 is a Released to Web (RTW) product and support is provided by Microsoft Help and Support. The forum will remain active.

Get the module

  • Microsoft Application Request Routing Version 2 for IIS 7 (x86) here (
  • Microsoft Application Request Routing Version 2 for IIS 7 (x64) here (

Using the module

The following articles explain how to install and configure ARR Version 2. It is strongly recommended that these articles are read in the order listed below as they get progressively more advanced.

  • Install Application Request Routing (ARR) Version 2 for IIS. — Includes IIS configuration recommendations when deploying in a production environment.
  • Configure and enable disk cache for ARR. — How to configure primary cache drives and a secondary cache drive that can be shared across multiple cache nodes.
  • Configure Caching with Query String Support in Application Request Routing
  • How to define cache hierarchy for ARR. — Explains how the cache relationship is managed in ARR.
  • Configure ARR as cache nodes in CDN/ECN — Steps through how ARR can be deployed as an edge/child cache node as well as a parent cache node.
  • Browse cached contents on disk. — View cached contents using IIS Manager across multiple primary cache drives.
  • Remove cached contents from ARR. — Delete one or more cached contents while browsing or by matching URL patterns.
  • Running Scavenger.exe to delete cached content in the secondary drive as a standalone utility.
  • Override cache-control directives in an HTTP response. — Control what to cache or for how long to cache, irrespective of cache-control directives.
  • Warm up cache nodes on ARR with anticipated contents. — Proactively cache contents on ARR before they are in demand.
  • Configure byte-range request segment size in ARR. — Explore how ARR handles byte-range requests.
  • Configure request consolidation feature in ARR. — Understand how ARR can help with serving live streaming media.
  • Using compression in ARR. — ARR compresses and caches compressed objects even if the content server does not support compression.
  • Using performance counters. — Use performance counters to gather real-time runtime statistics.
  • Deployment recommendations for ARR. — Best practices and recommendations for ARR deployment.

Changes in URL Rewrite Module

ARR Version 2 includes the updated version of URL Rewrite Module 2.0, which has several breaking changes that were introduced since the release of the URL Rewrite 2.0 Beta. The breaking changes are listed below:

  • If a distributed rewrite rule sets a server variable, then that server variable has to be added to a <allowedServerVariables> collection. This can be done by either using the URL Rewrite user interface in IIS Manager or by modifying the applicationHost.config file as shown below. Note that it is not necessary to do this if the server variable is set by using a global rule.

        <add name="MY_SERVER_VARIABLE" />
  • The HTTP_CONTENT_TYPE server variable has been replaced with RESPONSE_CONTENT_TYPE. If an outbound rewrite rule uses a pre-condition that checks the HTTP_CONTENT_TYPE, then that rule will stop working. Change the pre-condition to use RESPONSE_CONTENT_TYPE instead.