<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.iis.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:cs="http://blogs.iis.net/"><channel><title>Just Another IIS Blog : IIS News Item</title><link>http://blogs.iis.net/thomad/archive/tags/IIS+News+Item/default.aspx</link><description>Tags: IIS News Item</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Now Available: URL Rewriter Tech Preview 1 </title><link>http://blogs.iis.net/thomad/archive/2008/05/30/now-available-url-rewriter-tech-preview-1.aspx</link><pubDate>Sat, 31 May 2008 00:31:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2391884</guid><dc:creator>thomad</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/rsscomments.aspx?PostID=2391884</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/commentapi.aspx?PostID=2391884</wfw:comment><comments>http://blogs.iis.net/thomad/archive/2008/05/30/now-available-url-rewriter-tech-preview-1.aspx#comments</comments><description>&lt;P&gt;Today we are releasing Technical Preview 1 of the URL Rewrite Module for IIS 7.0.&lt;/P&gt;
&lt;P&gt;The URL Rewrite Module provides a rule-based rewriting mechanism for changing request URL’s before they get processed by IIS. The module supports regular expression based URL rewriting logic or a simpler wildcard-based URL rewriting logic. Rewriting decisions can be based on the URL, HTTP headers and server variables. While the primary purpose of the module is to rewrite URLs, it also has functionality to perform redirects, send custom responses and abort requests based on the logic expressed in the rewrite rules.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Install the URL Rewrite Module today!&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.iis.net/Downloads/1691/ItemPermaLink.ashx" mce_href="http://www.iis.net/Downloads/1691/ItemPermaLink.ashx"&gt;Microsoft URL Rewrite Module for IIS 7.0 CTP1 (x86)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.iis.net/Downloads/1692/ItemPermaLink.ashx" mce_href="http://www.iis.net/Downloads/1692/ItemPermaLink.ashx"&gt;Microsoft URL Rewrite Module for IIS 7.0 CTP1 (x64)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Feature Set&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Here is a quick feature overview: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Rules-based URL rewriting engine&lt;/STRONG&gt;. Rules are used to compare/match the request URL with and what to do if comparison was successful. &lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Regular expression pattern matching&lt;/STRONG&gt;. Rewrite rules can use &lt;A href="http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf" mce_href="http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf"&gt;ECMA-262&lt;/A&gt; compatible regular expression syntax for pattern matching. 
&lt;LI&gt;&lt;STRONG&gt;Wildcard pattern matching&lt;/STRONG&gt;. Rewrite rules can use Wildcard syntax for pattern matching &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Back-references to patterns and conditions&lt;/STRONG&gt;. Back-references are used to capture parts of a matched URL so that it can be re-used later in a rule when constructing a substitution URL string. Back-references are available with regular expression and wildcards patterns. 
&lt;LI&gt;&lt;STRONG&gt;Global and distributed rewrite rules&lt;/STRONG&gt;. Global rules are used to define server-wide URL rewriting logic. Global rules cannot be overridden or disabled by lower configuration levels. Distributed rules are used to define URL rewriting logic specific to a particular configuration scope, e.g. an web application. 
&lt;LI&gt;&lt;STRONG&gt;Access to server variables and http headers&lt;/STRONG&gt;. Server variables and HTTP headers provide additional information about current HTTP request. This information can be used to make rewriting decisions or to compose the output URL. 
&lt;LI&gt;&lt;STRONG&gt;Various rule actions&lt;/STRONG&gt;. Instead of rewriting a URL, a rule may perform other actions, such as issue an HTTP redirect, abort the request, or send a custom status code to HTTP client. 
&lt;LI&gt;&lt;STRONG&gt;Rewrite maps&lt;/STRONG&gt;. Rewrite map is an arbitrary collection of name-value pairs that can be used within rewrite rules to generate the substitution URL during rewriting. Rewrite maps are particularly useful when you have a large set of rewrite rules, all of which use static strings (i.e. there is no pattern matching used). In those cases, instead of defining a large set of simple rewrite rules, you can put all the mappings between input URL and substitution URL as keys and values into the rewrite map, and then have one rewrite rule which references this rewrite map to look up substitution URL based on the input URL. 
&lt;LI&gt;&lt;STRONG&gt;UI for managing rewrite rules&lt;/STRONG&gt;. Rewrite rules can be added, removed and edited by using "URL Rewrite Module" feature in IIS Manager. 
&lt;LI&gt;&lt;STRONG&gt;GUI tool for importing of mod_rewrite rules&lt;/STRONG&gt;. URL rewrite module includes a GUI tool for converting rewrite rules from mod_rewrite format into IIS format.&lt;BR&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;B&gt;More information&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt; 
&lt;P&gt;URL Rewrite Module Walkthroughs - &lt;A href="http://learn.iis.net/page.aspx/460/using-url-rewrite-module/" mce_href="http://learn.iis.net/page.aspx/460/using-url-rewrite-module/"&gt;http://learn.iis.net/page.aspx/460/using-url-rewrite-module/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;URL Rewrite Module Configuration Reference - &lt;A href="http://learn.iis.net/page.aspx/465/url-rewrite-module-configuration-reference/" mce_href="http://learn.iis.net/page.aspx/465/url-rewrite-module-configuration-reference/"&gt;http://learn.iis.net/page.aspx/465/url-rewrite-module-configuration-reference/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Questions and feedback&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;URL Rewrite Forum -&lt;A href="http://forums.iis.net/1152.aspx" mce_href="http://forums.iis.net/1152.aspx"&gt; http://forums.iis.net/1152.aspx&lt;/A&gt;&lt;/P&gt;
&lt;SCRIPT src="http://www.google-analytics.com/urchin.js" type=text/javascript&gt;
&lt;/SCRIPT&gt;

&lt;SCRIPT type=text/javascript&gt;
_uacct = "UA-2165857-2";
urchinTracker();
&lt;/SCRIPT&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2391884" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/thomad/archive/tags/URL+Rewriter/default.aspx">URL Rewriter</category></item><item><title>The IIS Process Model Features</title><link>http://blogs.iis.net/thomad/archive/2008/05/07/the-iis-process-model-features.aspx</link><pubDate>Thu, 08 May 2008 06:08:48 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2344705</guid><dc:creator>thomad</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/rsscomments.aspx?PostID=2344705</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/commentapi.aspx?PostID=2344705</wfw:comment><comments>http://blogs.iis.net/thomad/archive/2008/05/07/the-iis-process-model-features.aspx#comments</comments><description>&lt;p&gt;A process model is needed to run more than one web-site, web application or web-service securely and reliably on a single machine. In Shared Hosting scenarios hundreds or even thousands of web-sites run on an individual machine. The code running on these web-sites is usually not well tested, if at all. Without a powerful process model the result would be extremely poor reliability. But a process model not only guarantees availability; it also needs to isolate them so that individual web applications don't interfere with each other. &lt;/p&gt;  &lt;p&gt;The Windows Process Activation Service (WAS) is the system component providing the Process Model in IIS 7.0. This article discusses the WAS features and functions. &lt;/p&gt;  &lt;h2&gt;1. Application Pools&lt;/h2&gt;  &lt;p&gt;Processes are the containers that provide isolation and security boundaries in the Windows Operating System. Consequently web applications or web-sites have to run in separate processes in order to achieve isolation between them. In the IIS terminology the management unit for these separate IIS processes is called 'Application Pool'. &lt;/p&gt;  &lt;p&gt;An Application Pool can be configured to run a group of URLs, i.e. web-sites, web applications or web-services. When a client requests one of these Application Pool URLs an IIS worker process (w3wp.exe) is spawned by WAS to execute the code necessary to send a response. WAS's main task is to manage Application Pools - WAS spawns worker processes, monitors their health, recycles them if necessary and makes sure none of them consume more resources than specified in the corresponding AppPool configuration. WAS is also the arbiter and collector for run-time and state data, e.g. performance counters, site and Application Pool state. &lt;/p&gt;  &lt;h2&gt;2. Architectural Diagram &lt;/h2&gt;  &lt;p&gt;The diagram below shows the core pieces of the IIS7 architecture.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Configuration is stored in the applicationhost.config file (left).&amp;#160; &lt;/li&gt;    &lt;li&gt;HTTP.SYS is a kernel-mode component that listens to the network, accepts connections, assigns requests into Application Pool queues and queues these requests if no IIS worker process is running. HTTP.SYS also caches responses and does SSL in IIS 7.0 &lt;/li&gt;    &lt;li&gt;The worker process on the right hosts all custom code (e.g. ASP and ASP.Net pages, modules, ISAPI filter and extensions etc.). There can be hundreds of these worker processes depending on how the IIS Administrator decides to isolate his web-sites and applications. IIS worker processes pick up waiting requests from the corresponding HTTP.SYS request queue. &lt;/li&gt;    &lt;li&gt;The Windows Activation Service is a system service that runs in SVCHOST.EXE. WAS reads configuration from applicationhost.config, reacts to configuration changes, manages worker processes, controls their live time and health, recycles them if necessary and prevents resource exhaustion. W3SVC is another service living in the same SVCHOST.EXE as WAS. W3SVC hosts the HTTP specific part of the IIS process model; W3SVC configures HTTP.SYS with the URLs to listen on and is called by HTTP.SYS if requests arrive and worker processes are needed. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/blogs/thomad/WindowsLiveWriter/TheIISProcessModelFeatures_1402B/procmod_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="379" alt="procmod" src="http://blogs.iis.net/blogs/thomad/WindowsLiveWriter/TheIISProcessModelFeatures_1402B/procmod_thumb.jpg" width="509" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;3. Process Model Features&lt;/h2&gt;  &lt;p&gt;Web-Sites and applications get the following benefits by running in the WAS provided infrastructure:&lt;/p&gt;  &lt;h3&gt;Efficient Resource Management&lt;/h3&gt;  &lt;h4&gt;On-Demand Activation&lt;/h4&gt;  &lt;p&gt;Resources like RAM and CPU are scarce in multi-tenant scenarios. WAS will start an IIS worker process only once requests for a particular web site or web application arrive. &lt;/p&gt;  &lt;h4&gt;Idle-timeout&lt;/h4&gt;  &lt;p&gt;Because resources are usually scarce WAS can shutdown web applications based on a configurable idle-timeout. &lt;/p&gt;  &lt;h4&gt;Health Monitoring&lt;/h4&gt;  &lt;p&gt;To ensure their health WAS monitors the worker processes it spawned. Health messages are periodically sent to each running worker process. If the worker process doesn't respond in a configurable time interval the worker process will be recycled or killed. This way undetected deadlocks in worker processes get automatically fixed by restarting the worker process. &lt;/p&gt;  &lt;h4&gt;Startup Limit&lt;/h4&gt;  &lt;p&gt;Part of the Rapid-Fail Protection feature is the Startup limit. If a worker process doesn't report back to WAS within the configurable startup-limit it will be killed and the Rapid-Fail-Protection counter is incremented. Application Pools are stopped, i.e. restarting the worker process will not be tried anymore, if the Rapid-Fail-Protection counter reaches a configurable limit within a configurable time limit. This prevents scenarios where worker processes hang or crash during startup. &lt;/p&gt;  &lt;h4&gt;Shutdown Limit&lt;/h4&gt;  &lt;p&gt;A worker process also has to shutdown in a configurable limit. If the shutdown doesn't happen in this time the worker process gets killed by WAS. This prevents resource overuse due to processes hanging in their shut-down phase. Additional shutdown settings allow an executable to be started (e.g. a debugger) when the shutdown doesn't complete within the allotted time. &lt;/p&gt;  &lt;h4&gt;CPU affinity&lt;/h4&gt;  &lt;p&gt;Configuration settings allow WAS to start worker processes that are affinitized to one or more CPUs. This prevents tenants from interfering with each other if they share the same physical machine. &lt;/p&gt;  &lt;h4&gt;User Profile&lt;/h4&gt;  &lt;p&gt;WAS can start worker processes with or without loading the user profile. &lt;/p&gt;  &lt;h3&gt;Security &lt;/h3&gt;  &lt;h4&gt;Customizable User Account&lt;/h4&gt;  &lt;p&gt;IIS worker processes can run as a preconfigured process identity or built-in accounts (LocalService, LocalSystem, NetworkService). Built-in accounts are advantages because they don't require password management. If a custom user identity is used the password is automatically encrypted. Configuration settings can be replicated to multiple machines by sharing the configuration encryption keys across machines. &lt;/p&gt;  &lt;h3&gt;Job Object Features&lt;/h3&gt;  &lt;p&gt;Job objects allow administrators to restrict worker processes to a particular CPU limit. A configurable action is taken if this CPU limit is exceeded. Job objects will also make sure that processes spawned by the worker process get terminated. &lt;/p&gt;  &lt;h3&gt;Configuration Isolation and Security&lt;/h3&gt;  &lt;p&gt;Before WAS starts an Application Pool and its worker process it generates a unique configuration file for this Application Pool. WAS also creates a unique SID for each Application Pool (similar to Service SIDs introduced in Windows Server 2008). The Application Pool configuration file is then secured with this unique SID. This ensures that Application Pool configuration files can only be read by Administrators and the Application Pool itself. &lt;/p&gt;  &lt;h3&gt;Diagnostics and Monitoring&lt;/h3&gt;  &lt;h4&gt;Event Logging&lt;/h4&gt;  &lt;p&gt;Events regarding invalid configuration, recycling, startup or shutdown of worker processes are reported to the System Eventlog. &lt;/p&gt;  &lt;h4&gt;Currently Executing Requests&lt;/h4&gt;  &lt;p&gt;WAS exposes a run-time and state control interface that allows scripts and tools to query for the currently executing requests of a particular worker process. This is useful to find requests that hang or requests that take a very long time to complete. &lt;/p&gt;  &lt;h4&gt;Performance Counters&lt;/h4&gt;  &lt;p&gt;All IIS performance counters get funneled through WAS. WAS gathers these performance counters because IIS counters are site-based and web applications can live in different Application Pools. &lt;/p&gt;  &lt;h3&gt;Recycling&lt;/h3&gt;  &lt;p&gt;Recycling allows the refresh of worker processes without losing a single request due to down-time. This is done via a feature called &amp;quot;overlapping recycling&amp;quot;. &lt;/p&gt;  &lt;h4&gt;Overlapping Recycling&lt;/h4&gt;  &lt;p&gt;WAS does this by spawning up a new worker process parallel to the old one that is still handling requests. Once the new worker process is up it starts picking up requests from the request queue while the old worker process is instructed by WAS to stop picking up requests. Once the old worker process finishes all executing requests it shuts down. This feature is called &amp;quot;overlapping recycling&amp;quot;. It ensures that no requests are lost during a recycle. &lt;/p&gt;  &lt;h4&gt;Recycling Configuration&lt;/h4&gt;  &lt;p&gt;Recycling parameters are configurable in the IIS configuration system. &lt;/p&gt;  &lt;h4&gt;Scheduled Recycling &lt;/h4&gt;  &lt;p&gt;Customers might want to recycle their applications based on a regular schedule. Via configuration settings recycling can be scheduled periodically, e.g. every 4 hours, every day at 1am etc. &lt;/p&gt;  &lt;h4&gt;Recycling Based on Memory Consumption&lt;/h4&gt;  &lt;p&gt;Applications might leak memory over time. WAS can monitor the memory consumption of each worker processes to ensure that no worker process uses more than its preconfigured limit. Reaching a configured virtual or private memory threshold will trigger the recycling of a worker process. &lt;/p&gt;  &lt;h4&gt;Recycling Based on Number of Requests&lt;/h4&gt;  &lt;p&gt;Recycling can also be configured based on the number of requests a particular worker process handled. &lt;/p&gt;  &lt;h4&gt;Custom Recycling&lt;/h4&gt;  &lt;p&gt;Custom code can custom health statistics and trigger a recycling via an API call to the WAS run-time and state API's. &lt;/p&gt;  &lt;h4&gt;Process Orphaning&lt;/h4&gt;  &lt;p&gt;Some errors only happen in a production environment. Killing worker processes ensures up-time but troubleshooting of these errors becomes difficult, e.g. if the failing worker process needs to be debugged. The process orphaning feature in WAS allows worker processes to be recycled without killing the failed worker process. Now a debugger can be attached to it. Additional process orphaning settings allow the execution of a process (e.g. a debugger) if orphaning happens. &lt;/p&gt;  &lt;h3&gt;Application Pool State Management&lt;/h3&gt;  &lt;p&gt;Application Pools can be stopped, recycled or started via publicly available API's, e.g. if an application has to be taken offline or if recycling has to be done based on parameters different from what's configurable in the applicationhost.config file. &lt;/p&gt;  &lt;h3&gt;Additional WAS Features&lt;/h3&gt;  &lt;h4&gt;Load-Balancer Features&lt;/h4&gt;  &lt;p&gt;HTTP.SYS still listens on the network and will return a 500 HTTP error message if requests are not picked up by an Application Pool. This is a problem because for a Level 5 Load Balancers (TCP/IP) a 500 HTTP error looks like a valid TCP/IP connection. A WAS configuration setting can enable HTTP.SYS to reject connections instead of sending HTTP responses. &lt;/p&gt;  &lt;p&gt;WAS can be configured to start worker processes with the following settings: &lt;/p&gt;  &lt;h4&gt;WoW64 Support&lt;/h4&gt;  &lt;p&gt;WAS can start 32-Bit or 64-Bit worker processes. &lt;/p&gt;  &lt;h4&gt;.NET Framework Preload&lt;/h4&gt;  &lt;p&gt;WAS can be configured to preload a particular version of the .NET Framework. This can make the troubleshooting of version conflicts much easier. &lt;/p&gt;  &lt;h4&gt;Web Gardens&lt;/h4&gt;  &lt;p&gt;A Web Garden is the term for an Application Pool that runs with multiple worker processes. Requests get distributed among these worker process instances using a round-robin mechanism. &lt;/p&gt;  &lt;h3&gt;WAS Multi Protocol Support&lt;/h3&gt;  &lt;p&gt;WAS not only host the HTTP stack. It can also host other protocols via its Listen Adapter and Worker Process Framework. WCF services take advantage of the WAS Multi-Protocol support. WCF protocols come with their own Listeners (e.g. the NET.TCP, NET.MSMQ or NET.PIPE Listener). These Listeners connect to WAS using the Listener Adapter Interfaces WAS provides. &lt;/p&gt;  &lt;p&gt;Application protocols that take advantage of this infrastructure can host custom application code in the same .NET Application Domain as regular ASP.NET applications. They can also take advantage of the protocol-independent services the ASP.NET Hosting Environment provides, for example on-demand compilation, configuration support etc. &lt;/p&gt;  &lt;h2&gt;4. Summary&lt;/h2&gt;  &lt;p&gt;IIS7 and WAS offer a powerful process model for web-sites, web applications and web-services. It not only ensures availability but also ensures isolation and offers great troubleshooting and monitoring support. &lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2344705" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/thomad/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/thomad/archive/tags/Hosting/default.aspx">Hosting</category><category domain="http://blogs.iis.net/thomad/archive/tags/Process+Model/default.aspx">Process Model</category><category domain="http://blogs.iis.net/thomad/archive/tags/W3SVC/default.aspx">W3SVC</category><category domain="http://blogs.iis.net/thomad/archive/tags/WAS/default.aspx">WAS</category><category domain="http://blogs.iis.net/thomad/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>IIS7 PowerShell Provider Podcast</title><link>http://blogs.iis.net/thomad/archive/2008/04/29/iis7-powershell-provider-podcast.aspx</link><pubDate>Tue, 29 Apr 2008 22:43:53 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2328688</guid><dc:creator>thomad</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Saw a post on forums.iis.net last week about a Podcast on our new IIS7 PowerShell Provider. Being the Program Manager for this thing I thought maybe these guys want me to participate in the Podcast. And sure enough - Jonathan and Hal were interested. And here it is the podcast link and the interview topics: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://powerscripting.wordpress.com/2008/04/26/powerscripting-podcast-episode-23-iis7-special/" href="http://powerscripting.wordpress.com/2008/04/26/powerscripting-podcast-episode-23-iis7-special/"&gt;http://powerscripting.wordpress.com/2008/04/26/powerscripting-podcast-episode-23-iis7-special/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;u&gt;Interview Topics&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2"&gt;Who are you&amp;#160; &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;What&amp;#8217;s your background at MS and elsewhere &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;Talk about the IIS7 management cmdlets &lt;/font&gt;      &lt;ul&gt;       &lt;li&gt;&lt;font size="2"&gt;Get/Set-WebConfiguration &lt;/font&gt;&lt;/li&gt;        &lt;li&gt;&lt;font size="2"&gt;Start-WebItem &lt;/font&gt;&lt;/li&gt;        &lt;li&gt;&lt;font size="2"&gt;Remove-WebConfigurationProperty &lt;/font&gt;&lt;/li&gt;        &lt;li&gt;&lt;font size="2"&gt;Ability to use XPath filters &lt;/font&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;Talk about the IIS7 PSprovider &lt;/font&gt;      &lt;ul&gt;       &lt;li&gt;&lt;font size="2"&gt;Provider timeline - 2nd beta in June, final in October &lt;/font&gt;&lt;/li&gt;        &lt;li&gt;&lt;font size="2"&gt;Features &lt;/font&gt;          &lt;ul&gt;           &lt;li&gt;&lt;font size="2"&gt;ability to configure IIS and ASP.net, sites, vdirs, apps, all that &lt;/font&gt;&lt;/li&gt;            &lt;li&gt;&lt;font size="2"&gt;ability to delegate &lt;/font&gt;&lt;/li&gt;            &lt;li&gt;&lt;font size="2"&gt;root of namespace: sites, app pools &lt;/font&gt;&lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;font size="2"&gt;What does the future hold (that you can discuss) &lt;/font&gt;      &lt;ul&gt;       &lt;li&gt;&lt;font size="2"&gt;We talk about Server Core &lt;/font&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2328688" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/thomad/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/thomad/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>IIS 7.0 PowerShell Provider Tech Preview 1</title><link>http://blogs.iis.net/thomad/archive/2008/04/14/iis-7-0-powershell-provider-tech-preview-1.aspx</link><pubDate>Mon, 14 Apr 2008 20:10:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2297363</guid><dc:creator>thomad</dc:creator><slash:comments>0</slash:comments><description>&lt;P mce_keep="true"&gt;Finally,&amp;nbsp;IIS 7.0 has a PowerShell Provider!&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;The IIS7 PowerShell Provider allows you to &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Create Web-Sites, Web Applications, Virtual Directories and Application Pools 
&lt;LI&gt;Change Simple Configuration Properties on Web-Sites, Application Pools, Web Applications and Virtual Directories 
&lt;LI&gt;Add and Change Complex Configuration Settings 
&lt;LI&gt;Query&amp;nbsp;Run-time Data (Web-Site State, Application Pool State, Currently Executing Requests) 
&lt;LI&gt;Execute Advanced Configuration Tasks, Scripting, Integration with other PowerShell Snap-Ins and features 
&lt;LI&gt;Search and Discover Configuration Settings &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Here is a screen shot of how to create a new IIS app:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG title="PowerShell Provider Screenshot" style="WIDTH: 601px; HEIGHT: 541px" height=685 alt="PowerShell Provider Screenshot" src="http://blogs.iis.net/blogs/thomad/ps.jpg" width=1210 mce_src="http://blogs.iis.net/blogs/thomad/ps.jpg"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DOWNLOAD:&lt;BR&gt;&lt;/STRONG&gt;Tech Preview 1 of the IIS 7.0 PowerShell Provider can be found here: &lt;BR&gt;x86: &lt;A href="http://www.iis.net/downloads/1664/ItemPermaLink.ashx" mce_href="http://www.iis.net/downloads/1664/ItemPermaLink.ashx"&gt;http://www.iis.net/downloads/1664/ItemPermaLink.ashx&lt;/A&gt;&lt;BR&gt;x64: &lt;A href="http://www.iis.net/downloads/1665/ItemPermaLink.ashx" mce_href="http://www.iis.net/downloads/1665/ItemPermaLink.ashx"&gt;http://www.iis.net/downloads/1665/ItemPermaLink.ashx&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;FORUMS: &lt;BR&gt;&lt;/STRONG&gt;Go to our PowerShell forum if you need support or if you are looking for&amp;nbsp;'Tips and Tricks'&lt;BR&gt;&lt;A href="http://forums.iis.net/1151.aspx" mce_href="http://forums.iis.net/1151.aspx"&gt;http://forums.iis.net/1151.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;WALKTHROUGHS:&lt;BR&gt;&lt;/STRONG&gt;We have 9 walkthroughs for you to get familiar with the IIS 7.0 PowerShell Provider:&lt;BR&gt;&lt;A href="http://learn.iis.net/page.aspx/447/managing-iis-with-the-iis-70-powershell-provider/" mce_href="http://learn.iis.net/page.aspx/447/managing-iis-with-the-iis-70-powershell-provider/"&gt;http://learn.iis.net/page.aspx/447/managing-iis-with-the-iis-70-powershell-provider/&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Have fun!&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2297363" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/thomad/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/thomad/archive/tags/PowerShell/default.aspx">PowerShell</category></item><item><title>How to speed up your most popular web page</title><link>http://blogs.iis.net/thomad/archive/2007/01/17/how-to-speed-up-your-most-popular-web-page.aspx</link><pubDate>Wed, 17 Jan 2007 21:05:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1537012</guid><dc:creator>thomad</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/rsscomments.aspx?PostID=1537012</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/commentapi.aspx?PostID=1537012</wfw:comment><comments>http://blogs.iis.net/thomad/archive/2007/01/17/how-to-speed-up-your-most-popular-web-page.aspx#comments</comments><description>&lt;P&gt;&lt;STRONG&gt;What's your most popular web page? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I assume it is the default document of your web site, for example if a client requests &lt;A href="http://www.mysite.com/"&gt;www.mysite.com&lt;/A&gt; IIS would execute &lt;A href="http://www.mysite.com/default.htm"&gt;www.mysite.com/default.htm&lt;/A&gt;. Your default document list is easy to query: &lt;/P&gt;&lt;EM&gt;
&lt;P&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-STYLE:normal;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;C:\&amp;gt;%systemdrive%\inetpub\adminscripts\adsutil get w3svc\defaultdoc&lt;/SPAN&gt;&lt;/EM&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-STYLE:normal;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;Microsoft (R) Windows Script Host Version 5.7&lt;/SPAN&gt;&lt;/EM&gt;&lt;I&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-STYLE:normal;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;Copyright (C) Microsoft Corporation. All rights reserved.&lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-STYLE:normal;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;mso-bidi-font-style:italic;"&gt;defaultdoc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : (STRING) &lt;EM&gt;"&lt;/EM&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE:9pt;FONT-FAMILY:'Courier New';mso-bidi-font-size:10.0pt;"&gt;Default.asp,index.htm,index.html,iisstart.htm,default.aspx,Default.htm&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;/EM&gt;What happens for a request to &lt;A href="http://www.mysite.com/"&gt;www.mysite.com&lt;/A&gt; is actually pretty simple:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;IIS&amp;nbsp;will&amp;nbsp;read the default document list and check file for file if the document exists in the physical directory of your site or vdir. IIS executes the document as soon as it finds the first match. You can imagine that this is pretty expensive. In the above case, supposing &lt;EM&gt;default.htm&lt;/EM&gt; is the only default document that exists in your sites root directory,&amp;nbsp;&amp;nbsp;IIS would check five times until it finds default.htm. &lt;STRONG&gt;And this happens for every request!&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;The fixes for this problem are obvious: &lt;BR&gt;1) trim down your default document list &lt;BR&gt;2) put default documents that exist at the beginning of the list&lt;/P&gt;
&lt;P&gt;Fix 2 has another huge&amp;nbsp;benefit. IIS can put the first default document into the HTTP.SYS kernel-mode cache. It can stay there&amp;nbsp;until IIS invalidates the cache, for example if the default document configuration changes. Kernel-mode caching is now possible because if an existing document is at the top of the list the existence of other default documents doesn't have to be checked anymore. &lt;/P&gt;
&lt;P&gt;Stay tuned for&amp;nbsp;my&amp;nbsp;DefaultDocOptimizer script. I'm writing it tonight &amp;nbsp;:)&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1537012" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News/default.aspx">IIS News</category><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category></item><item><title>Quo Vadis AccessFlags?</title><link>http://blogs.iis.net/thomad/archive/2006/11/05/quo-vadis-accessflags.aspx</link><pubDate>Sun, 05 Nov 2006 22:46:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1453694</guid><dc:creator>thomad</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/rsscomments.aspx?PostID=1453694</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/commentapi.aspx?PostID=1453694</wfw:comment><comments>http://blogs.iis.net/thomad/archive/2006/11/05/quo-vadis-accessflags.aspx#comments</comments><description>&lt;DIV style="BORDER-RIGHT:medium none;PADDING-RIGHT:0in;BORDER-TOP:medium none;PADDING-LEFT:0in;PADDING-BOTTOM:4pt;BORDER-LEFT:medium none;PADDING-TOP:0in;BORDER-BOTTOM:#4f81bd 1pt solid;mso-element:para-border-div;mso-border-bottom-themecolor:accent1;"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;H1 style="MARGIN:24pt 0in 0pt;"&gt;&lt;FONT face=Cambria color=#365f91 size=5&gt;Introduction&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;When IIS is configured as an Application Server it executes scripts like ASP and ASP.NET, CGI programs and other dynamic content. But in other scenarios IIS is supposed to only allow the&amp;nbsp;download of html files and other static content like html pages, music or video files. With the accessFlags setting in IIS 6.0 administrators were able to lock down the IIS execution permissions to prevent dynamic content from executing. &lt;/FONT&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:24pt 0in 0pt;"&gt;&lt;FONT face=Cambria color=#365f91 size=5&gt;accessFlags in IIS 6.0&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The configuration property that allows or prevents execution of dynamic content is called accessFlags in IIS 6.0. Here a link to the IIS 6.0 metabase reference documentation:&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/e9b6d626-9583-4d59-b7f7-a079ec47461c.mspx?mfr=true"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/e9b6d626-9583-4d59-b7f7-a079ec47461c.mspx?mfr=true&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Here is a brief overview of the three most important settings. These are also the only one’s show in the User Interface shown above.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT size=4&gt;&lt;FONT color=#4f81bd&gt;&lt;FONT face=Cambria&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;“Read”&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Setting a site, virtual directory or web application to “Read” has the effect that no dynamic content gets executed. If you have any kind of script content, for example ASP pages, ASP.NET pages, PHP or Perl scripts in this location they will generate a 403 Forbidden error. &lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT face=Cambria color=#4f81bd size=4&gt;“Script Execution”&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;If you set your site, virtual directory or web application to “Script Execution” only URLs that are mapped to script engines get executed. The most popular script engines on IIS are ASP, ASP.NET, Cold Fusion, PHP or Perl. To find out what script engines you have installed you have to look into the scriptmaps. The scriptmaps is another configuration property in IIS 6.0. It is there to register the script engine but also contains a mapping between a file extension and a DLL or executable. &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:10pt 0in 0pt;"&gt;&lt;FONT face=Cambria color=#4f81bd size=4&gt;“Script and Executable Content” &lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;If you want to allow the execution of an ISAPI extension or CGI program you have to enable “Script and Executable content”.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;If you don't do this you get a &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;EM&gt;HTTP Error 403.1 - Forbidden &lt;/EM&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face=Calibri size=3&gt;error. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Note: all executable programs also have to be registered in the Web Service Extension Restriction List before they can be executed otherwise you will see a 404.2 error in you log files!&lt;/FONT&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:24pt 0in 0pt;"&gt;&lt;FONT face=Cambria color=#365f91 size=5&gt;Changes in IIS7&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;There are several changes that got introduced in IIS 7. Scriptmaps are not called scriptmaps anymore. The configuration section is called “handlers” now. And accessflags is not called accessflags anymore. It’s name is now accessPolicy and it lives in the handlers configuration section. Let’s have a look at the handlers section in %windir%\system32\inetsrv\config\applicationhost.config:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&amp;lt;handlers accessPolicy="Script, Read"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="WebServiceHandlerFactory-ISAPI-2.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="AXD-ISAPI-1.1" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.Net\Framework\v1.1.4322\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv1.1,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="PageHandlerFactory-ISAPI-1.1" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.Net\Framework\v1.1.4322\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv1.1,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="SimpleHandlerFactory-ISAPI-1.1" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.Net\Framework\v1.1.4322\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv1.1,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="WebServiceHandlerFactory-ISAPI-1.1" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.Net\Framework\v1.1.4322\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv1.1,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="HttpRemotingHandlerFactory-rem-ISAPI-1.1" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.Net\Framework\v1.1.4322\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv1.1,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="HttpRemotingHandlerFactory-soap-ISAPI-1.1" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.Net\Framework\v1.1.4322\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv1.1,bitness32" responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="TraceHandler-Integrated" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="WebAdminHandler-Integrated" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" preCondition="integratedMode" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="HttpRemotingHandlerFactory-rem-Integrated" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="HttpRemotingHandlerFactory-soap-Integrated" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/handlers&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;There are two interesting settings in this section from an execution policy point of view. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT face=Calibri size=3&gt;1)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;accessPolicy and &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo1;"&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT face=Calibri size=3&gt;2)&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;requiredAccess&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;As you can see the accessPolicy setting is set for the whole handlers collection. In our case it is set to “Read” and “Script”. This means that only handlers that require “Read” or “Script” access will execute. Every handler that requires “Execute” access will not run with this setting. A ??? error will be generated. For example: Only if you extend the accessPolicy to “Read”, “Script” and “Execute” you will be able to execute an unmapped ISAPI extension (ISAPI-dll). The requireAccess property in for ISAPI extensions requires “Execute” access, see below: &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;The accessPolicy entry to enable unmapped ISAPI extensions would look like this: &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&amp;lt;handlers accessPolicy="Script, Read, Execute"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;If you don’t want to allow any dynamic content you would set the accessPolicy to &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&amp;lt;handlers accessPolicy="Read"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Only the following handlers would remain in the list. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&amp;lt;handlers accessPolicy="Script, Read"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-font-size:11.0pt;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/handlers&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Note: Every handler without the requiredAccess property set will use the default. The default for requiredAccess is “Script”. &lt;/FONT&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:24pt 0in 0pt;"&gt;&lt;FONT face=Cambria color=#365f91 size=5&gt;Controlling accessPolicy via the User Interface&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-no-proof:yes;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Access policy can still be controlled on a granular level . To change the access policy: navigate to your site, virtual directory or web application and click the “Handler Mappings” icon. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-no-proof:yes;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;You will see an entry called “Edit Handler Permissions…” in the Actions menueon the right hand side. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-no-proof:yes;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;EM&gt;&amp;lt;I will add pictures how the UI looks soon - promise!&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-no-proof:yes;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;If you click this entry you will get a dialog that allows you to control the access policy for the location you selected. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:24pt 0in 0pt;"&gt;&lt;SPAN style="mso-no-proof:yes;"&gt;&lt;FONT size=5&gt;&lt;FONT color=#365f91&gt;&lt;FONT face=Cambria&gt;Summary &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;IIS7 introduced several changes to the way IIS7 controls execution permissions to web content. The new handlers configuration section now contains all settings necessary to set the policy for web content. These permissions can be controlled on a granular level and let Administrators determine what can be executed on their servers and what’s forbidden. &lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1453694" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category></item><item><title>Achtung! IIS7 Preconditions </title><link>http://blogs.iis.net/thomad/archive/2006/11/04/precondition-what.aspx</link><pubDate>Sat, 04 Nov 2006 19:25:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1453160</guid><dc:creator>thomad</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/rsscomments.aspx?PostID=1453160</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/commentapi.aspx?PostID=1453160</wfw:comment><comments>http://blogs.iis.net/thomad/archive/2006/11/04/precondition-what.aspx#comments</comments><description>&lt;DIV style="BORDER-RIGHT:medium none;PADDING-RIGHT:0in;BORDER-TOP:#c0504d 1.5pt solid;PADDING-LEFT:0in;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;PADDING-TOP:1pt;BORDER-BOTTOM:medium none;mso-element:para-border-div;mso-border-top-themecolor:accent2;"&gt;&lt;FONT face=Calibri size=3&gt;If you ever looked into the IIS configuration file applicationhost.config you might have encountered a setting called “precondition”.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Here is the handler entry for aspnet_isapi.dll for example: &lt;/FONT&gt;&lt;/DIV&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="classicMode,runtimeVersionv2.0,bitness32"&lt;/SPAN&gt; responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:15pt 0in 2pt;"&gt;&lt;FONT face=Calibri size=5&gt;The Need for Preconditions&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;IIS is an application platform that supports extensibility in multiple different ways: ISAPI filters, ISAPI extensions and new with IIS7: managed modules and handlers and native module and handlers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;All these extensibility modules are all packaged into DLLs and these DLLs are then&amp;nbsp;loaded into IIS worker&amp;nbsp;processes.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:12pt 0in 4pt;"&gt;&lt;FONT face=Calibri&gt;The Bitness precondition&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;64-Bit processors become more and more prevalent. Soon OEMs will stop shipping 32-Bit processors. Switching over to a 64-Bit Operation System, for example Longhorn Server 64-Bit, is hard though, because a lot of software is still written for Windows 32-Bit operating systems. Longhorn Server provides a 32-Bit execution environment on top of the 64-bit Operating System called WoW64. IIS takes advantage of this and you can run 32-Bit worker processes side by side with 64-Bit worker processes. IIS7 introduces the bitness32 and bitness64 precondition to make sure you load DLLs with the right bitness in your worker processes. Without this precondition you would have to have 32-Bit and 64-Bit handler and module maps.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:12pt 0in 4pt;"&gt;&lt;FONT face=Calibri&gt;The RuntimeVersion preconditon&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;This precondition was introduced for the different versions of the .NET Framework. Currently only one version of&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;the .NET Framework can be loaded in a process. Trying to load another version of the .NET Framework into the same process results into ugly errors. With the RuntimeVersion precondition components that need a particular&amp;nbsp; version of the .NET Framework can be marked to be loaded only in worker processes that loaded this&amp;nbsp;version of the .NET Framework already. Setting the version of the .NET Framework is now an Application Pool property and IIS worker processes use this property to preload the right version of the .NET Framework on startup. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:12pt 0in 4pt;"&gt;&lt;FONT face=Calibri&gt;The ManagedHandler precondition&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;IIS 7.0 introduces a new managed extensibility model. Handlers and Modules can now be written in managed code and directly integrated into the IIS request pipeline. But switching between managed and native code is an expensive operation. The managedHandler precondition was introduced to allow optimizing the performance of requests where no managed code needs to be involved, for example when static files (.html, .jpg etc.)&amp;nbsp;are served. No managed code is called if the request is served by a native handler and every managed module is configured with the managedHandler precondition. A practical scenario is Forms authentication. The managed Forms authentication module has a managedHandler precondition and is therefore only called when ASP.NET content (e.g. *.aspx) pages are requested. If a .html page is requested the forms authentication is not called. If you want to protect all your content with forms authentication you can simply remove the managedHandler precondition from the Forms authentication module entry. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:12pt 0in 4pt;"&gt;&lt;FONT face=Calibri&gt;The Mode Precondition&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The new managed module and managed handler extensibility allows you to add managed code, i.e. ASP.NET pages, modules and handlers, directly into the IIS7 pipeline. IIS7 needs to run the worker process in a particular way for this to work. It needs to load the .NET Framework 2.0 and it also needs to run a module called webengine.dll. Webengine.dll does all the work of hooking up managed modules with the IIS7 pipeline because IIS7 itself doesn’t know about managed code. The new way to integrate ASP.NET pages, modules and handlers is called “Integrated Mode”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;But there is still the good old way to hook up managed code in IIS7, i.e. via the ISAPI interface. ASPNET_ISAPI.DLL used to do this in IIS 5, 5.1 and 6.0. IIS7 continues to support the ISAPI hookup if you run the worker process in “classic Mode”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;As a result IIS7 introduced two preconditions called “integratedMode” and “classicMode”. A handler that has an “integratedMode” precondition associated with it will only be loaded into an Application Pool that has the “integratedMode” property set on the ApplicationPool. Handlers with the “classicMode” precondition will only be loaded into Application Pools that have the integratedMode property set to false. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:15pt 0in 2pt;"&gt;&lt;FONT face=Calibri size=5&gt;Configuration Sections that Use Preconditions&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;There are four IIS7 configuration sections that use preconditions: &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;ISAPI filters&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;globalModules&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;handlers&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l1 level1 lfo1;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;modules&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:12pt 0in 4pt;"&gt;&lt;FONT face=Calibri&gt;ISAPIFilters&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;ISAPI filter preconditions are the easiest to explain.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;When the ISAPI filter module intiailizes it reads the &amp;lt;isapiFilters&amp;gt; configuration section and goes through the list of ISAPI filters. Every filter in the list gets loaded into memory and its initialization function is called. Now what if the filter is a 32-Bit binary but you are running on a 64-Bit Longhorn system? Initialization would fail and the IIS worker process wouldn’t come up. That’s not an unlikely scenario because running 32-Bit and 64-Bit worker processes on IIS7 is a supported scenario. Just think about your legacy web application that isn’t available on 64-Bit yet? &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;Don’t you want to run it in a 32-Bit AppPool side-by-side with your new 64-Bit apps and take advantage of the humongous 64-Bit address space?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Preconditions come handy in this case. If you have a 64-Bit ISAPI filter you can mark your ISAPI filter with the bitness64 precondition. &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;This makes sure that it only gets loaded in 64-Bit worker processes because when the ISAPI filter module initializes it ignores ISAPI filters if the bitness precondition differs from the bitness of the process. Here an example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;isapiFilters&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;filter name="MyIsapiFilter" path="c:\myfilter.dll" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="bitness64"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;/isapiFilters&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;MyIsapiFilter is never loaded into a 32-Bit worker process. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:12pt 0in 4pt;"&gt;&lt;FONT face=Calibri&gt;globalModules&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Another configuration section that works with preconditions is globalModules. The globalModules section determines which IIS modules get loaded into worker processes. With preconditions you can make sure that worker process only load modules that work in a particular Application Pool. This was especially done to make the ASP.NET side-by-side story more manageable. You might remember that the module webengine.dll is responsible to hook up the managed request pipeline with the native IIS7 pipeline. When an AppPool is configured to run this way the AppPool runs in so-called “Integrated Mode”. &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;“Integrated Mode” is only possible with the .NET Framework 2.0 binaries. This already explains the preconditions you see on webengine.dll in the globalModules section:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="ManagedEngine" image="%windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="integratedMode,runtimeVersionv2.0,bitness32"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face=Calibri size=3&gt;Webengine.dll precondtions&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The “integratedMode” precondition ensures that webengine.dll gets only loaded in Application Pools that are configured to run “Integrated Mode”, i.e. the Application Pool property managedPipelineMode is set to “Integrated”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;runtimeVersionv2.0 is a precondition that ensures that webengine.dll is only loaded by the IIS core if the Application Pool has the .NET Framework 2.0 version preloaded. Without ensuring this IIS or an application within IIS might have loaded a different .NET Framework version (at the time of this writing the only other supported .NET Framework version is 1.1). Loading webengine.dll would fail if a different .NET Framework version would already be loaded in the process. Only one version of the .NET Framework can be loaded into a particular process space however. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The final precondition is bitness32. I already talked about this quickly in the isapiFilter paragraph. &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;You might ask why there are no bitness preconditions on the other modules. The nice thing with system DLL’s living underneath the \windows directory is that they get automatically redirected based on their bitness. If running a 64-Bit worker process IIS will load global modules from the 64-Bit Windows directory whereas when running a 32-Bit worker process the modules get loaded from the 32-Bit Windows directory. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:15pt 0in 2pt;"&gt;&lt;FONT face=Calibri size=5&gt;handlers&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The handlers section in applicationhost.config determines how particular requests get routed. Usually this is based on the file extension. Requests that end in .asp for example get routed to the ISAPI Extension module which in turn routes it on to ASP.DLL. Here is the beginning of a handler section in applicationhost.config. I didn’t include the whole section because it is pretty big. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;handlers accessPolicy="Script, Read"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" resourceType="File" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="PageHandlerFactory-ISAPI-1.1" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="classicMode,runtimeVersionv1.1,bitness32"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="classicMode,runtimeVersionv2.0,bitness32"&lt;/SPAN&gt; responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="integratedMode"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;/handlers&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The preconditions on the handlers section are usually the same as on globalModules and side-by-side of ASP.NET applications is also the major reason to have preconditions. If you worked with ASP.NET 1.1 and 2.0 on IIS6 you might have noticed that ASP.NET 2.0 has to be configured on a per application basis. Before you can run a particular ASP.NET application you have make sure the application is configured for the ASP.NET version you want to use. ASP.NET is coming with a property page that can be plugged into IIS6 to do this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;lt;ASP.NET UI in IIS 6.0&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;What this property page does is to copy the full handlers list to applications metabase. This becomes a problem over time because a) the metabase becomes pretty big and b) handlers that get installed globally are not inherited anymore. It also doesn’t prevent you from having two applications with differing versions of ASP.NET running in the same process. The result is pretty random. Whatever application loads its version of ASP.NET first will work. The other application will fail to load. The next time the worker process recycles the second application might work but not the first one anymore. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;With preconditions these problems are gone because the version of the .NET Framework to load is an Application Pool property.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Together with preconditions it enables IIS to have a single global handler list that doesn’t have to be replicated to every application that runs a different version of the .NET Framework. All that an Administrator has to do is to configure an Application Pool with the right .NET Framework version and put the applications in there. One could say that ASP.NET side-by-side is solved by Application Pools. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face=Calibri size=3&gt;ASP.NET 1.1 Application Pool configuration&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;In the above example you see three .aspx mappings all in the same list. It depends on how the Application Pool is configured on which handler is loaded. Here is the setting for ASP.NET 1.1 applications:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="PageHandlerFactory-ISAPI-1.1" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="classicMode,runtimeVersionv1.1,bitness32"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;To get these settings loaded in your Application Pool you have to &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;set the managedPipelineMode property to “classicMode”&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;set the managedRuntimeVersion property to “v1.1”&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;run the worker process on a Vista/Longhorn 32-Bit Operating System or set the Application Pool property Enable32bitAppOnWin64 to true on 64-Bit Vista or Longhorn versions&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face=Calibri size=3&gt;ASP.NET 2.0 Application Pool configuration for classic Mode&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The second .aspx mapping is needed for Application Pools that run in classic Mode:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="classicMode,runtimeVersionv2.0,bitness32"&lt;/SPAN&gt; responseBufferLimit="0" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Is only effective if &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;the managedPipelineMode property on the Application Pool is set to “classicMode”&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;the managedRuntimeVersion property on the Application Pool is set to “v2.0”&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;the worker process is running on a Vista/Longhorn 32-Bit Operating System or if the Application Pool property Enable32bitAppOnWin64 is set to true on 64-Bit Vista or Longhorn &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 style="MARGIN:0in 0in 0pt;"&gt;&lt;FONT face=Calibri size=3&gt;ASP.NET 2.0 Application Pool configuration for Integrated Mode&lt;/FONT&gt;&lt;/H3&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The third mapping will be loaded for Integrated Mode. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="integratedMode"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;You see that ISAPI is not involved in this mapping. A managed type is used instead which tells us that Integrated Mode is enabled. To enable Integrated Mode the AppPool has to have the following settings&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;the managedPipelineMode property on the Application Pool is set to “integratedMode”&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN:0in 0in 10pt 0.5in;TEXT-INDENT:-0.25in;mso-list:l0 level1 lfo2;"&gt;&lt;SPAN style="FONT-FAMILY:Symbol;mso-fareast-font-family:Symbol;mso-bidi-language:EN-US;mso-bidi-font-family:Symbol;"&gt;&lt;SPAN style="mso-list:Ignore;"&gt;&lt;FONT size=3&gt;·&lt;/FONT&gt;&lt;SPAN style="FONT:7pt 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;the managedRuntimeVersion property on the Application Pool is set to “v2.0” because otherwise webengine.dll wouldn’t load (see globalModules above).&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Managed code is also bitness independent. The right version of webengine.dll has to be loaded though. On a 64-Bit operating system both versions are installed by IIS setup.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 style="MARGIN:12pt 0in 4pt;"&gt;&lt;FONT face=Calibri&gt;Modules&lt;/FONT&gt;&lt;/H2&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Modules are to IIS7 what ISAPI filters where to IIS6. Where handlers get executed only for a particular file extension, modules can register for and participate in particular events that get fired by the IIS core during &lt;U&gt;each&lt;/U&gt; request, for example at BeginRequest, Authenticate, SendResponse or EndRequest. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;The loading of modules is already done via the globalModules list which is global. But enabling a particular module can be done per application and that’s why IIS7 has the &amp;lt;modules&amp;gt; section. It is pretty much an enablement list for modules. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Here is a typical IIS7 modules section:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;modules&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="HttpCacheModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="StaticCompressionModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="DefaultDocumentModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="DirectoryListingModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="ProtocolSupportModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="StaticFileModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="AnonymousAuthenticationModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="IsapiFilterModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="RequestFilteringModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="CustomErrorModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="IsapiModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="HttpLoggingModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="RequestMonitorModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="ConfigurationValidationModule" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="OutputCache" type="System.Web.Caching.OutputCacheModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="Session" type="System.Web.SessionState.SessionStateModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="RoleManager" type="System.Web.Security.RoleManagerModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="managedHandler" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="Profile" type="System.Web.Profile.ProfileModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="UrlMappingsModule" type="System.Web.UrlMappingsModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;/modules&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;The only precondition you see in the &amp;lt;modules&amp;gt; collection is called “managedHandler” and you can see that it is only applied to modules that have a managed type. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;For performance reasons IIS7 doesn’t want to run managed code on every request because managed code still has some performance drawbacks. The managedHandler precondition is used to only enable a particular module if the request is going to a managed handler anyway. Every request that goes to a native handler will run through the IIS7 pipeline without managed code being executed. Here is an example: Forms Authentication is a managed module with the managedHandler precondition: &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="FONT-SIZE:8pt;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-bidi-language:EN-US;"&gt;&amp;lt;add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" &lt;SPAN style="BACKGROUND:yellow;mso-highlight:yellow;"&gt;preCondition="managedHandler"&lt;/SPAN&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;When a request to /default.aspx comes in IIS7 determines that a managed handler (System.Web.UI.PageHandlerFactory – see handler paragraph above) will execute the request. The managedHandler precondition becomes true and every module that has the managedHandler precondition can participate in the request. Browser clients would be challenged with the authentication page if Forms authentication is enabled for /foo.aspx. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;If a request to /default.htm is made IIS7 will find out at the beginning of the request that it will be handled by the StaticFile handler which is a native handler. The managedHandler precondition is false and the modules which have this precondition wouldn’t be loaded for /default.htm. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;But what if you want to protect /default.htm with forms authentication? Simple, just remove the managedHandler precondition and every request will have to go through the Forms Authentication module.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;Note: FormsAuthentication needs some other modules to work, for example Roles, UrlAuthorization etc. It is recommended to remove all managedHandler preconditions if non-managed content is supposed to be protected with Forms Authentication. &lt;/FONT&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:15pt 0in 2pt;"&gt;&lt;FONT face=Calibri size=5&gt;Handler issues&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;There is one issue to be aware of with preconditions. What happens if a handler for a particular request is configured, for example .foo is mapped like this &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="FOO-Handler" path="*.foo" verb="*" modules="FooModule" preCondition=" bitness32" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;But the worker process is a 64-Bit process? &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;In this case the precondition doesn’t match and IIS continues to search for another handler. The last handler on the list is usually the StaticFile handler:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;TEXT-ALIGN:left;" align=left&gt;&lt;SPAN style="FONT-SIZE:8pt;COLOR:black;LINE-HEIGHT:115%;FONT-FAMILY:'Courier New';mso-themecolor:text1;"&gt;&amp;lt;add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;FONT face=Calibri size=3&gt;It catches pretty much all requests that weren’t handled by a handler higher up. The static file handler doesn’t serve out the request as static file though. This would be a security problem, just imagine serving out ASP or ASP.NET files as static text. The static file handler is intelligent enough to not send out any file extensions that are on the handler list. A 404.3 error is generated in this case. &lt;/FONT&gt;&lt;/P&gt;
&lt;H1 style="MARGIN:15pt 0in 2pt;"&gt;&lt;FONT face=Calibri size=5&gt;Summary&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN:0in 0in 10pt;"&gt;&lt;SPAN style="mso-bidi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Preconditions are a powerful way to introduce conditional logic into IIS configuration sections. This enables IIS7 to provide a solid side-by-side platform for .NET Framework 1.1 and 2.0 applications but also for 32-Bit and 64-Bit applications. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1453160" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category></item><item><title>IIS7 Logparser Gadget</title><link>http://blogs.iis.net/thomad/archive/2006/10/30/IIS7-Logparser-Gadget.aspx</link><pubDate>Mon, 30 Oct 2006 19:41:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1447145</guid><dc:creator>thomad</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/rsscomments.aspx?PostID=1447145</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/thomad/commentapi.aspx?PostID=1447145</wfw:comment><comments>http://blogs.iis.net/thomad/archive/2006/10/30/IIS7-Logparser-Gadget.aspx#comments</comments><description>&lt;DIV class=body&gt;
&lt;P&gt;&lt;A href="http://blogs.iis.net/bills/"&gt;&lt;FONT color=#669966&gt;Bill&lt;/FONT&gt;&lt;/A&gt; sent me e-mail on Saturday announcing that he wrote his first Windows Sidebar Gadget. It allows him to start PerfMon or other arbitrary programs from the Windows Sidebar. &lt;/P&gt;
&lt;P&gt;&lt;A&gt;&lt;IMG title="Logparser Gadget" style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;WIDTH:262px;HEIGHT:441px;BORDER-RIGHT-WIDTH:0px;" height=441 alt="Logparser Gadget" src="http://iisgeek.no-ip.org/content/logparser.jpg" width=262 align=left border=0&gt;&lt;/A&gt; I wanted to write a gadget for a long time and use it for one or the other IIS7 demo in the three talks I give on TechEd Barcelona. Bill's mail made me finally do it. So I spent the whole day Saturday to come up with my own gadget and right before dinner time the "&lt;FONT color=#669966&gt;&lt;A title="Logparser Gadget" href="http://blogs.iis.net/thomad/attachment/1447145.ashx"&gt;IIS7 Logparser Gadget&lt;/A&gt;&lt;/FONT&gt;" was born (click the link to download it).&lt;/P&gt;
&lt;P&gt;It runs a user-definable Logparser query, reads the first result and shows it on the gadget. Here is how it works: &lt;/P&gt;
&lt;P&gt;1) gadget.xml is a global configuration file containing&amp;nbsp;descriptions, etc. Not too interesting. The only important entry is the html file that gets invoked to show the gadget. In our case it is Logparser.html. &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;BR&gt;&amp;lt;gadget&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;name&amp;gt;Logparser Gadget&amp;lt;/name&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;namespace&amp;gt;Logparser.Gadget&amp;lt;/namespace&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;version&amp;gt;1.0&amp;lt;/version&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;author name="Thomas Deml"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;info url="www.iis.net" /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/author&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;icons&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;icon src="icon.png" /&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/icons&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;copyright&amp;gt;2006&amp;lt;/copyright&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;description&amp;gt;Logparser Gadget that runs custom query&amp;lt;/description&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;hosts&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;host name="sidebar"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;base type="HTML" apiVersion="1.0.0" src="Logparser.html" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;permissions&amp;gt;full&amp;lt;/permissions&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;platform minPlatformVersion="0.3" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/host&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/hosts&amp;gt;&lt;BR&gt;&amp;lt;/gadget&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;2) logparser.htm is the html file that contains the code that shows the gadget and runs the query&lt;STRONG&gt;. In logparser.html you find the meat of the gadget&lt;/STRONG&gt;.&amp;nbsp;The Javascript code defines the default logparser query (it looks a bit cryptic, but the query returns the sum of http requests that ran in the last hour) and sets up a timer to run the query every 30 seconds. If an error occurs I write it to the logparser_gadget_error.log file. &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&amp;lt;html&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;head&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;title&amp;gt;Logparser Gadget&amp;lt;/title&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;style&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; body { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; width:130;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; height:74;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; background: url('Image.png');&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; padding-top: 0px;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/style&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;body onload="countdown()" &amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;span id="gadgetContent" style='font-family: Calibri; font-size: 10pt; color: Black'&amp;gt;init&amp;lt;/span&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;script&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;!--&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var g_logFileLocation = System.Environment.getEnvironmentVariable("systemdrive") + "\\inetpub\\logs\\logfiles\\w3svc1\\*.log" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var g_queryInterval = 30000;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var g_queryDescription = "Requests in the last hour: "&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var g_query = "SELECT COUNT(*) FROM " + g_logFileLocation + " WHERE SUB(TO_INT(TO_LOCALTIME(SYSTEM_TIMESTAMP())),TO_INT(TO_LOCALTIME(TO_TIMESTAMP(date,time)))) &amp;lt; 3600"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Gadget.Settings.write("queryInterval", g_queryInterval);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Gadget.Settings.write("queryDescription", g_queryDescription); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Gadget.Settings.write("query", g_query);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Gadget.settingsUI = "Settings.html"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Gadget.onSettingsClosed = SettingsClosed; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function SettingsClosed() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_query = System.Gadget.Settings.read("query");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_queryInterval = System.Gadget.Settings.read("queryInterval");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_queryDescription = System.Gadget.Settings.read("queryDescription");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function countdown()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var LogParser=new ActiveXObject("MSUtil.LogQuery"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var recordSet; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var result;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var objInputFormat = new ActiveXObject("MSUtil.LogQuery.IISW3CInputFormat");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objInputFormat.Recurse = 0; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; recordSet = LogParser.Execute( g_query, objInputFormat);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(; !recordSet.atEnd(); recordSet.moveNext())&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = recordSet.getRecord().toNativeString(0); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (err)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var fs = new ActiveXObject("Scripting.FileSystemObject"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var logfilename = System.Environment.getEnvironmentVariable("temp") + "\\logparser_gadget_error.log"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var logfile = fs.OpenTextFile(logfilename, 2, true); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logfile.WriteLine(System.Time.getLocalTime(System.Time.currentTimeZone) + ": " + err.description); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; logfile.Close(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gadgetContent.innerHTML = "Error - see logfile"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (errinner)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gadgetContent.innerHTML = errinner.description; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (result != null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gadgetContent.innerHTML = "&amp;lt;center&amp;gt;" + g_queryDescription + "&amp;lt;br&amp;gt;&amp;lt;B&amp;gt;" + result + "&amp;lt;/B&amp;gt;&amp;lt;/center&amp;gt;"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gadgetContent.innerHTML = "no results"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Id = window.setTimeout("countdown()",g_queryInterval); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new"&gt;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;BR&gt;&amp;lt;/html&amp;gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;3) settings.htm is pretty straightfoward, too. It allows you to change the Logparser query, the query description and the query interval (defaults to run every 30 seconds right now). It gets called when you right click on the gadget and click "Options". &lt;/P&gt;
&lt;P&gt;&lt;A&gt;&lt;IMG title="Logparser Gadget Options" style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;WIDTH:389px;HEIGHT:356px;BORDER-RIGHT-WIDTH:0px;" height=356 alt="Logparser Gadget Options" src="http://iisgeek.no-ip.org/content/lp_options.jpg" width=389 border=0&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;lt;html&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;head&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;style&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; body{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; width:600;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; height:200;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;script&amp;gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;System.Gadget.onSettingsClosing = SettingsClosing;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function init() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query.value = System.Gadget.Settings.read("query");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queryDescription.value = System.Gadget.Settings.read("queryDescription");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queryInterval.value = System.Gadget.Settings.read("queryInterval"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function SettingsClosing(event)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (event.closeAction == event.Action.commit) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.Gadget.Settings.write("query", query.value);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; System.Gadget.Settings.write("queryDescription", queryDescription.value);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Gadget.Settings.write("queryInterval", queryInterval.value);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; event.cancel = false;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;body onload="init()"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;div id="mySpan" style='font-family: Tahoma; font-size: 8pt; ' &amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Logparser Query:&amp;lt;br /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input style='font-family: Tahoma; font-size: 8pt; width: 250; ' type='text' id='query' &amp;gt;&amp;lt;br /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Query Description:&amp;lt;br /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input style='font-family: Tahoma; font-size: 8pt; width: 250; ' type='text' id='queryDescription' length='600'&amp;gt;&amp;lt;br /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Refresh Interval (msec):&amp;lt;br /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input style='font-family: Tahoma; font-size: 8pt; ' type='text' id='queryInterval' length='10'&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;nbsp;&amp;lt;/div&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;BR&gt;&amp;lt;/html&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;4) image.png and icon.png are the backgrounds for the gadget referenced in gadget.xml and logparser.html.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How to install it?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Download and install &lt;A title="Logparser 2.2" href="http://www.logparser.com/"&gt;&lt;FONT color=#669966&gt;Logparser 2.2&lt;/FONT&gt;&lt;/A&gt;. Create a gadget directory and copy the extracted files into it: md "%userprofile%\AppData\local\microsoft\Windows Sidebar\gadgets\logparser.gadget". Now right click on the Sidebar and select the Logparser Gadget: &lt;/P&gt;
&lt;P&gt;&lt;A&gt;&lt;IMG title="Logparser Gadget Selection" style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;WIDTH:475px;HEIGHT:242px;BORDER-RIGHT-WIDTH:0px;" height=242 alt="Logparser Gadget Selection" src="http://iisgeek.no-ip.org/content/logparser_gadget.jpg" width=475 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Issues:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;UAC bites again. If you run with User Account Protection on you don't have access to the IIS logfiles because they are ACLed to only allow Administrators. The only way around it right now is to ACL the logfiles to access for the identity Sidebar is running under. I usually do it like this: &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;ICACLS %systemdrive%\inetpub\logs\logfiles /grant %USERDOMAIN%\%USERNAME%:(CI)(OI)F /T&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;I hope this gives you an idea how to write your own gadgets. Have fun!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1447145" width="1" height="1"&gt;</description><enclosure url="http://blogs.iis.net/thomad/attachment/1447145.ashx" length="68685" type="application/x-zip-compressed" /><category domain="http://blogs.iis.net/thomad/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category></item></channel></rss>