<?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>Eric Woersching&amp;#39;s Blog : TechEd</title><link>http://blogs.iis.net/ewoersch/archive/tags/TechEd/default.aspx</link><description>Tags: TechEd</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>TechEd Australia Demos: Web 305 IIS7 for Developers</title><link>http://blogs.iis.net/ewoersch/archive/2007/08/07/teched-australia-demos-web-305-iis7-for-developers.aspx</link><pubDate>Wed, 08 Aug 2007 01:03:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1846337</guid><dc:creator>EWoersch</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/ewoersch/rsscomments.aspx?PostID=1846337</wfw:commentRss><comments>http://blogs.iis.net/ewoersch/archive/2007/08/07/teched-australia-demos-web-305-iis7-for-developers.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;As promised, here are my demo notes from my first TechEd Australia talk.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;If you were able to attend, thanks for coming.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;If you didn’t make it or just aren’t lucky enough to live in OZ, I think some of this may still be helpful for you, especially if you are just getting started with IIS7.&lt;/FONT&gt;&lt;/P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Adding and Removing Modules&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In this short demo, I showed how to pull IIS7 modules out of an IIS worker process by removing their configuration from the &amp;lt;globalModules&amp;gt; and &amp;lt;modules&amp;gt; sections of applicationHost.config (located in %systemdrive%\Windows\System32\inetsrv\config\ ).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;I used this Windows Powershell script to display what modules were currently loaded into the worker process:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;gps -name w3wp | select -expand Modules | where {$_.Filename -like '*\inetsrv*'} | ft&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;I showed this example of the minimum module configuration for just serving static content: &lt;/FONT&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;FONT color=#0000ff size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;globalModules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;DefaultDocumentModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;image&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;%windir%\System32\inetsrv\defdoc.dll&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;StaticFileModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;image&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;%windir%\System32\inetsrv\static.dll&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;AnonymousAuthenticationModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;image&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;%windir%\System32\inetsrv\authanon.dll&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;globalModules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;modules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;DefaultDocumentModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;lockItem&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;true&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;StaticFileModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;lockItem&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;true&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;AnonymousAuthenticationModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;lockItem&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;true&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;modules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;This is the profile of the worker process under this configuration:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/01_Powershell_output.jpg"&gt;&lt;IMG src="http://blogs.iis.net/blogs/ewoersch/01_Powershell_output.jpg" border=0&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;For more on IIS7 Modules, check out &lt;/FONT&gt;&lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Managing-IIS7/Configuring-the-IIS7-Runtime/Configuring-Modules/IIS7-Modules-Overview"&gt;&lt;FONT face=Calibri size=3&gt;IIS7 Modules Overview&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;For more on Windows Powershell, check out the &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/PowerShell/"&gt;&lt;FONT face=Calibri size=3&gt;PowerShell Blog on MSDN&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Migrating an ASP.NET site to IIS7&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In this next part, I showed how easy it is to get your ASP.NET site up and running on IIS7.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I first created a new Web site in IIS manager and pointed it at my site’s directory.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;When I hit the site in IE for the first time, I got this error:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/02_HTTP_Error_500.22.jpg"&gt;&lt;IMG src="http://blogs.iis.net/blogs/ewoersch/02_HTTP_Error_500.22.jpg" border=0&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The reason I get this error is because there are settings in my site’s Web.config file that do not apply in Integrated managed pipeline mode.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;By default, when I create a new site, IIS7 will create a new Application Pool for it, which by default, will run in Integrated managed pipeline mode.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;If my existing ASP.NET site use &amp;lt;httpModules&amp;gt;, &amp;lt;httpHandlers&amp;gt; or &amp;lt;identity impersonate = true&amp;gt;, I will get this error when I first run it in Integrated mode.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;No worries though, there is a simple command you can run to migrate these sections.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Even better, the error you see is one of IIS7’s new detailed errors, so the remedy is provided right in the error page (don’t worry, this great level of detail is only available locally, your customers definitely won’t be reading detailed errors that reveal configuration only you should be privy to) .&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I’ve marked the command in the error above, but here it is again:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'"&gt;%SystemRoot%\system32\inetsrv\appcmd migrate config "&amp;lt;Your Site Name&amp;gt;/"&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Verdana','sans-serif'"&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;After running this command in an elevated command prompt, IIS7 migrates the &amp;lt;httpModules&amp;gt; and &amp;lt;httpHandlers&amp;gt; sections that my site was using.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/02_MigrationCMD.jpg"&gt;&lt;IMG src="http://blogs.iis.net/blogs/ewoersch/02_MigrationCMD.jpg" border=0&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Here is the configuration that IIS7 adds to my Web.config for me:&lt;/FONT&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#0000ff size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;system.webServer&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;modules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;ScriptModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;preCondition&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;managedHandler&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;modules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;handlers&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;ScriptResource.axd_GET,HEAD&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;path&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;ScriptResource.axd&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;verb&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;GET,HEAD&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;preCondition&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;integratedMode,runtimeVersionv2.0&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;*_AppService.axd_*&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;path&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;*_AppService.axd&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;verb&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;*&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;preCondition&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;integratedMode,runtimeVersionv2.0&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;*.asmx_*&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;path&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;*.asmx&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;verb&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;*&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;preCondition&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;integratedMode,runtimeVersionv2.0&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;handlers&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;validation&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;validateIntegratedModeConfiguration&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;false&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;system.webServer&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Notice that IIS7 is using its new &amp;lt;system.webServer&amp;gt; section to store IIS configuration right alongside ASP.NET configuration in &amp;lt;system.web&amp;gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Also notice that the configuration for the module this site is adding, there is a setting “precondition=”managedHandler” that ensures the module is only used for ASP.NET requests.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;By default, when IIS7 migrates configuration for integrated mode, IIS will make sure that managed modules continue to run for only ASP.NET requests.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;This way there is no unexpected behavior when you migrate a site from IIS6.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;For more on running ASP.NET on IIS7, take a look at &lt;/FONT&gt;&lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Hosting-Web-Applications/ASP-NET/ASP-NET-Integration-with-IIS7"&gt;&lt;FONT face=Calibri size=3&gt;ASP.NET Integration with IIS7&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Applying Managed Modules to Non-Managed Content&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Once I have my site up and running in Integrated managed pipeline mode, I can start to take advantage of this new request processing feature by applying managed modules, like ASP.NET’s Forms Authentication module, to non-managed content, like a pdf file, without having to map any extra extensions to ASP.NET&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In my talk, this demo showed the power of the integrated pipeline, but it also illustrated just how deeply we integrated ASP.NET into our management stack.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;A full ASP.NET roles-based membership solution can be configured quickly from one place in one tool.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Then, by leveraging the integrated pipeline, we can apply this solution to any non-ASP.NET content found in the site.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;To set up this membership solution, I completed the following steps in IIS Manager:&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;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Enable Forms Authentication (don’t forget to add login.aspx to the root of your site’s directory)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle 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;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&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;Enable Role Manager and create a role&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle 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;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&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;Add new users to the membership store and the new role as appropriate&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;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&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;For only the URLs that require restricted access, configure Authorization rules (Deny Anonymous Users, Allow &amp;lt;Your Role&amp;gt;)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;I’ve marked where these steps must be completed in the next two screen shots.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/03_FormsAuth1.jpg"&gt;&lt;IMG src="http://blogs.iis.net/blogs/ewoersch/03_FormsAuth1.jpg" border=0&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/03_FormsAuth2.jpg"&gt;&lt;IMG src="http://blogs.iis.net/blogs/ewoersch/03_FormsAuth2.jpg" border=0&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;*Note: The stars on this screenshot indicate how I found the exact resource in my site’s directory using IIS Manager’s Content View, and then I switched to the Feature View for this particular URL and configured URL Authorization rules just for this resource.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;This membership solution will have no impact on the rest of my site since the rest of the site permits Anonymous users.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Now, this membership solution is fully implemented for ASP.NET but will not work for non-ASP.NET content, like static pdf files, because managed modules the solution requires, are not configured to process any request to static files. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Thus when I try to browse to this URL, I will get a 401.2 Unauthorized because Forms Authentication is not being loaded (because it’s a managed module) and the site needs Forms Authentication to acquire credentials required by the URL Authorization rules we set.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;URL Authorization is still enforced because it is a native IIS module and always works for all requests regardless of content type.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;To enable the membership solution for all static content, three managed modules must be configured to run for non-managed content: Forms Authentication, Default Authentication and Role Manager.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This step can be completed in the Modules feature area of IIS Manager or just by editing the &amp;lt;modules&amp;gt; section in Web.config.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Here is the result in Web.config:&lt;/FONT&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;FONT color=#0000ff size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;modules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;remove&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;DefaultAuthentication&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;remove&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;FormsAuthentication&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;remove&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;RoleManager&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;ScriptModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;preCondition&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;managedHandler&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;RoleManager&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;System.Web.Security.RoleManagerModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;preCondition&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;""&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;FormsAuthentication&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;System.Web.Security.FormsAuthenticationModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;preCondition&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;""&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;DefaultAuthentication&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;System.Web.Security.DefaultAuthenticationModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;preCondition&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;""&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;modules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Note that the precondition attribute has been cleared for the RoleManager, FormsAuthentication and DefaultAuthentication modules.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This is the setting that allows them to take advantage of request processing integration and apply to all content types.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;For more on the Integrated managed pipeline mode, check out &lt;/FONT&gt;&lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/Getting-Started/How-to-Take-Advantage-of-the-IIS7-Integrated-Pipel"&gt;&lt;FONT face=Calibri size=3&gt;How to Take Advantage of the IIS7 Integrated Pipeline&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;For more on using Forms Authentication for all request types, check out &lt;/FONT&gt;&lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Managing-IIS7/Configuring-Security/Forms-Authentication-in-IIS7"&gt;&lt;FONT face=Calibri size=3&gt;Forms Authentication in IIS7&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Configuring PHP on IIS7&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;In this short demo, I deployed a new PHP site and pointed out two configurations that are mandatory for hosting a PHP site on IIS7.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;The first was adding index.php to the Default Document list which can be done easily in Web.config or the IIS Manager tool.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This step is required because by default, IIS will not include the popular default document for PHP.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The second important configuration was to add a handler (what we used call a script map) that tells IIS to processes files of the extension *.php with the CGI module or more preferably, the new FastCGI module.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This second step is rather easy to complete by selecting “Add Module Mapping” from Actions List in the Handlers feature page of IIS Manager.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;The result is a Web.config file that can be deployed with the PHP site to preconfigure the site for any IIS7 server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Here are its contents:&lt;/FONT&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;FONT color=#0000ff size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;configuration&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;system.webServer&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;defaultDocument&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;files&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;value&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;index.php&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;files&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;defaultDocument&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;handlers&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;FastCGI_PHP&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;path&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;*.php&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;verb&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;*&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;modules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;FastCgiModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;scriptProcessor&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;E:\php\php-cgi.exe&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;resourceType&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;Unspecified&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;handlers&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;system.webServer&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;configuration&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;For more on PHP on IIS7, check out &lt;/FONT&gt;&lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Hosting-Web-Applications/PHP/Using-FastCGI-to-host-PHP-applications-on-IIS7"&gt;&lt;FONT face=Calibri size=3&gt;Using FastCGI to host PHP applications on IIS7&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Output Caching for Faster Dynamic Content&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;IIS7 introduces Output Caching for all types of dynamic content.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;I demonstrated just how much performance can be improved by enabling output caching for the PHP application, QDIG, which I deployed in the previous demo.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;As you can see in the screenshot below, Output Caching is simple to set up from the Output Caching feature page in IIS Manager.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/05_OutputCaching.jpg"&gt;&lt;IMG src="http://blogs.iis.net/blogs/ewoersch/05_OutputCaching.jpg" border=0&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;I’ve pointed out my specific configurations with the red boxes.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;My cache rule is for the file extension *.php and cached responses are set to be refreshed every 30 seconds.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;I selected User-mode caching so I can cache multiple versions of the same file and under “Advanced Settings,” I’ve told the Output Caching module that the responses will vary based on four Query String parameters (Qwd, Qif, Qiv and Qis).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Here is the exact configuration from the site’s Web.config file:&lt;/FONT&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;FONT color=#0000ff size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;caching&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;profiles&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;extension&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;.php&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;policy&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;CacheForTimePeriod&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;kernelCachePolicy&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;DontCache&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;duration&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;00:00:30&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;varyByQueryString&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;Qwd, Qif, Qiv, Qis&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;profiles&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;caching&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;For more on Output Caching, check out &lt;/FONT&gt;&lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Managing-IIS7/Optimizing-Performance/Using-Output-Cache/IIS7-Output-Caching"&gt;&lt;FONT face=Calibri size=3&gt;IIS7 Output Caching&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Testing the Performance of FastCGI and Output Caching with WCAT&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In the previous two demos, I used a great utility called WCAT (Web Capacity Analysis Tool) that allowed me to quickly test the performance of the two enhancements I made to the PHP site, switching to FastCGI over CGI to process PHP and enabling Output Caching of the dynamic responses of the Qdig site.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;If you hadn’t heard of WCAT, for you, this may have been the most valuable part of my whole talk.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;WCAT is essential for testing not just your Web applications on IIS but your entire architecture of Web servers, databases, load balancers and other infrastructure that sits in front and behind an IIS-hosted site.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Used locally, it can help isolate any performance issues that are rooted entirely in your application’s code.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;This is really helpful when you’re trying something new and you’d like to get some idea of how it will affect site performance before it’s rolled out into production.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/06_WCATOutput.jpg"&gt;&lt;IMG src="http://blogs.iis.net/blogs/ewoersch/06_WCATOutput.jpg" border=0&gt;&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Above is the results of my test of the Output Caching enabled Qdig site.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;How did I configure WCAT to get me all this performance data?&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It’s pretty easy to set up actually.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;There are two parts of WCAT to configure, the controller and the client.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Think of the controller as the piece that does all the counting and the client as the piece that is hitting your application with all the simulated requests.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In my talk, I conveniently used two batch files to quickly execute the controller and the client in separate command prompts.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Here’s what these two files contain:&lt;/FONT&gt;&lt;/P&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;php_controller.bat&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;wcctl -c config.cfg -s script.cfg -d distribution.cfg -a qdig&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;This is where the real work happens.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;I tell the controller (wcctl) what configuration, script and distribution files to use for the test (config.cfg, script.cfg, distribution.cfg), as well as what site to monitor (qdig).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&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 my configuration file for the tests, config,cfg.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;You can tweak these settings as much as you like, for me Duration is the most important setting, it’s how long I’m making the audience wait for the test to finish. &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri size=3&gt;Warmuptime 0s&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri size=3&gt;Duration 20s&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri size=3&gt;CooldownTime 0s&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri size=3&gt;NumClientMachines 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT face=Calibri size=3&gt;NumClientThreads 20&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Here is my script file, script.cfg, which tells WCAT client what requests to make against the server.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I only listed the first two entries because I think you can get the point.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Main thing is to use a new classId as you’re cutting and pasting in new transactions.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;NEW TRANSACTION&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;classId = 1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;NEW REQUEST HTTP&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Verb = "GET"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;URL = "http://qdig/index.php?Qwd=./PHOTOS&amp;amp;Qiv=none&amp;amp;Qis=M"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;NEW TRANSACTION&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;classId = 2&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;NEW REQUEST HTTP&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Verb = "GET"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;URL = "http://qdig/index.php?Qwd=./PHOTOS&amp;amp;Qif=DougWhistler.JPG&amp;amp;Qiv=none&amp;amp;Qis=M&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;…&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Here is my distribution file, distribution.cfg, which tells WCAT client what the distribution of the different requests listed in the script file should be used.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Each pair of numbers is a classId, followed by a weighting.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(Note: despite what is shown, the total of all the numbers listed second does &lt;I style="mso-bidi-font-style: normal"&gt;not&lt;/I&gt; have to add to 100 percent)&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;1 9&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;2 9&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;3 9&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;4 9&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;5 9&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;6 9&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;7 9&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;8 9&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;9 9&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;10 9&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;11 10&lt;/FONT&gt;&lt;/P&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;php_client.bat&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/I&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;wcclient.exe qdig&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The client batch file includes no fancy configurations.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;I just need to tell wcclient.exe which site to hit and the controller configurations will specify everything else.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;For more on WCAT, check out &lt;/FONT&gt;&lt;A href="http://blogs.iis.net/chrisad/archive/2006/07/19/WCAT_3A00_--Easy_2C00_-Magical_2C00_-Stress-Testing-for-IIS-Web-Applications.aspx"&gt;&lt;FONT face=Calibri size=3&gt;WCAT: Easy, Magical Stress Testing for IIS Web Applications&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 115%"&gt;&lt;FONT face=Calibri&gt;Building a Managed Module&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt; 
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;In the last demo, I showed a small extension for IIS7 written in .NET, that adds a little footer to the bottom of a Web page and I showed it working for both an ASP.NET site and a PHP site.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;I quickly showed the code for this module ( &amp;lt; 150 lines!) and then told everyone to come back the next day and see my two talks on IIS7 Extensibility talk which go much deeper .&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In similar fashion, this blog post includes just the configuration for adding this module and the code from FooterModule.cs.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;My next two posts covering my demos from the two extensibility talks will explain IIS7 extensibility in far greater detail. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Config: &lt;/FONT&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;FONT color=#0000ff size=1&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;modules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; 
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;add&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;FooterModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=1&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;=&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;FooterModule.FooterModule&lt;/FONT&gt;&lt;FONT color=#000000 size=1&gt;"&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt; /&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;modules&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Code:&lt;/FONT&gt;&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 8pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;FONT color=#0000ff size=1&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#000000&gt; System;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#000000&gt; System.IO;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#000000&gt; System.Collections.Generic;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#000000&gt; System.Text;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#000000&gt; System.Text.RegularExpressions;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#000000&gt; System.Web;&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;namespace&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#000000&gt; FooterModule&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;&amp;lt;summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; The module class.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;&amp;lt;/summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;class&lt;/FONT&gt;&lt;FONT size=1&gt; FooterModule : IHttpModule&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;#region&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#000000&gt; IHttpModule Members&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;&amp;lt;summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; Initializes the module, and registers for application events.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;&amp;lt;/summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;&amp;lt;param name="application"&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; The System.Web.HttpApplication instance exposing application events.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;&amp;lt;/param&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;void&lt;/FONT&gt;&lt;FONT size=1&gt; Init(HttpApplication application)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;application.ReleaseRequestState += &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;new&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;EventHandler&lt;/FONT&gt;&lt;FONT size=1&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;this&lt;/FONT&gt;&lt;FONT size=1&gt;.AddFilter);&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;&amp;lt;summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; Disposes of the resources (other than memory) used by the module.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;///&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=1&gt;&amp;lt;/summary&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;void&lt;/FONT&gt;&lt;FONT size=1&gt; Dispose()&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;
&lt;P&gt;#endregion&lt;/P&gt;#region&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#000000&gt; Module Event Handlers&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;void&lt;/FONT&gt;&lt;FONT size=1&gt; AddFilter(&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;object&lt;/FONT&gt;&lt;FONT size=1&gt; source, &lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;EventArgs&lt;/FONT&gt;&lt;FONT size=1&gt; e)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;HttpApplication application1 = (HttpApplication)source;&lt;/P&gt;
&lt;P&gt;HttpContext context1 = application1.Context;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;string&lt;/FONT&gt;&lt;FONT size=1&gt; text1 = context1.Response.ContentType.ToLower();&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;if&lt;/FONT&gt;&lt;FONT size=1&gt; (context1.Response.ContentType == &lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;"text/html"&lt;/FONT&gt;&lt;FONT size=1&gt;)&lt;/P&gt;context1.Response.Filter = &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;new&lt;/FONT&gt;&lt;FONT size=1&gt; FooterFilter(context1.Response.Filter);&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;
&lt;P&gt;#endregion&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;class&lt;/FONT&gt;&lt;FONT size=1&gt; FooterFilter : &lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;Stream&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=1&gt;//public const string FOOTER_HTML = "&amp;lt;script src=\"/footer.js\"&amp;gt;&amp;lt;/script&amp;gt;";&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;const&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;string&lt;/FONT&gt;&lt;FONT size=1&gt; FOOTER_HTML = &lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;"&amp;lt;div align=center&amp;gt;&amp;lt;a href=\"http://www.iis.net/default.aspx?tabid=7\" title=\"IIS Home Page\"&amp;gt;&amp;lt;img style=\"border:none\" src=\"http://www.iis.net/images/getIISgraphics/powered-by-iis7-1of2.png\" alt=\"Powered By IIS 7\" /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;"&lt;/FONT&gt;&lt;FONT size=1&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;const&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;string&lt;/FONT&gt;&lt;FONT size=1&gt; BEFORE_REGEX = &lt;/FONT&gt;&lt;FONT color=#a31515 size=1&gt;@"&amp;lt;/body&amp;gt;\s*&amp;lt;/html&amp;gt;"&lt;/FONT&gt;&lt;FONT size=1&gt;;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;Stream&lt;/FONT&gt;&lt;FONT size=1&gt; responseStream;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;long&lt;/FONT&gt;&lt;FONT size=1&gt; position;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; FooterFilter(&lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;Stream&lt;/FONT&gt;&lt;FONT size=1&gt; inputStream)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;responseStream = inputStream;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;#region&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;FONT color=#000000&gt; Filter overrides&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;bool&lt;/FONT&gt;&lt;FONT size=1&gt; CanRead&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;get&lt;/FONT&gt;&lt;FONT size=1&gt; { &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;return&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;true&lt;/FONT&gt;&lt;FONT size=1&gt;; }&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;bool&lt;/FONT&gt;&lt;FONT size=1&gt; CanSeek&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;get&lt;/FONT&gt;&lt;FONT size=1&gt; { &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;return&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;true&lt;/FONT&gt;&lt;FONT size=1&gt;; }&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;bool&lt;/FONT&gt;&lt;FONT size=1&gt; CanWrite&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;get&lt;/FONT&gt;&lt;FONT size=1&gt; { &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;return&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;true&lt;/FONT&gt;&lt;FONT size=1&gt;; }&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;void&lt;/FONT&gt;&lt;FONT size=1&gt; Flush()&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;responseStream.Flush();&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;long&lt;/FONT&gt;&lt;FONT size=1&gt; Length&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;get&lt;/FONT&gt;&lt;FONT size=1&gt; { &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;return&lt;/FONT&gt;&lt;FONT size=1&gt; 0; }&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;long&lt;/FONT&gt;&lt;FONT size=1&gt; Position&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;get&lt;/FONT&gt;&lt;FONT size=1&gt; { &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;return&lt;/FONT&gt;&lt;FONT size=1&gt; position; }&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;set&lt;/FONT&gt;&lt;FONT size=1&gt; { position = &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;value&lt;/FONT&gt;&lt;FONT size=1&gt;; }&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;long&lt;/FONT&gt;&lt;FONT size=1&gt; Seek(&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;long&lt;/FONT&gt;&lt;FONT size=1&gt; offset, &lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;SeekOrigin&lt;/FONT&gt;&lt;FONT size=1&gt; origin)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;return&lt;/FONT&gt;&lt;FONT size=1&gt; responseStream.Seek(offset, origin);&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;void&lt;/FONT&gt;&lt;FONT size=1&gt; SetLength(&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;long&lt;/FONT&gt;&lt;FONT size=1&gt; length)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;responseStream.SetLength(length);&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;int&lt;/FONT&gt;&lt;FONT size=1&gt; Read(&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;byte&lt;/FONT&gt;&lt;FONT size=1&gt;[] buffer, &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;int&lt;/FONT&gt;&lt;FONT size=1&gt; offset, &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;int&lt;/FONT&gt;&lt;FONT size=1&gt; count)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;return&lt;/FONT&gt;&lt;FONT size=1&gt; responseStream.Read(buffer, offset, count);&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;void&lt;/FONT&gt;&lt;FONT size=1&gt; Close()&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;responseStream.Close();&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;
&lt;P&gt;#endregion&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;public&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;override&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;void&lt;/FONT&gt;&lt;FONT size=1&gt; Write(&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;byte&lt;/FONT&gt;&lt;FONT size=1&gt;[] buffer, &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;int&lt;/FONT&gt;&lt;FONT size=1&gt; offset, &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;int&lt;/FONT&gt;&lt;FONT size=1&gt; count)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;string&lt;/FONT&gt;&lt;FONT size=1&gt; pageHTML = System.Text.&lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;UTF8Encoding&lt;/FONT&gt;&lt;FONT size=1&gt;.UTF8.GetString(buffer, 0, buffer.Length);&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;Regex regex = &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;new&lt;/FONT&gt;&lt;FONT size=1&gt; Regex(BEFORE_REGEX, RegexOptions.IgnoreCase);&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;Match match = regex.Match(pageHTML);&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;if&lt;/FONT&gt;&lt;FONT size=1&gt; ((match != &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;null&lt;/FONT&gt;&lt;FONT size=1&gt;) &amp;amp;&amp;amp; match.Success)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;StringBuilder&lt;/FONT&gt;&lt;FONT size=1&gt; newBuffer = &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;new&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;StringBuilder&lt;/FONT&gt;&lt;FONT size=1&gt;(pageHTML.Length + FOOTER_HTML.Length);&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;newBuffer.Append(pageHTML.Substring(0, match.Index));&lt;/P&gt;
&lt;P&gt;newBuffer.Append(FOOTER_HTML);&lt;/P&gt;
&lt;P&gt;newBuffer.Append(pageHTML.Substring(match.Index));&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;ASCIIEncoding&lt;/FONT&gt;&lt;FONT size=1&gt; encoding = &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;new&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=1&gt;ASCIIEncoding&lt;/FONT&gt;&lt;FONT size=1&gt;();&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;byte&lt;/FONT&gt;&lt;FONT size=1&gt;[] finalBuffer = &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;new&lt;/FONT&gt;&lt;FONT size=1&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;byte&lt;/FONT&gt;&lt;FONT size=1&gt;[encoding.GetByteCount(newBuffer.ToString())];&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=1&gt; 
&lt;P&gt;finalBuffer = encoding.GetBytes(newBuffer.ToString());&lt;/P&gt;
&lt;P&gt;responseStream.Write(finalBuffer, 0, finalBuffer.Length);&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=1&gt;else&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=1&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;responseStream.Write(buffer, 0, buffer.Length);&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Deploying this module to IIS7 is simple, just drop the .cs file in the App_Code directory (create one if you have to) and then add the config settings to the Web.config file (again, create one if you have to).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Building this module was actually not too bad.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;The real relevant part is where I hooked the module into the IIS pipeline so it can touch every request.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;The rest of the code in the module could have been built for ASP.NET on IIS6.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Below is that crucial line from the Init() method.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&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: 'Lucida Console'; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;application.ReleaseRequestState += &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;EventHandler&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;.AddFilter);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Notice that I only need to tack on an EventHandler to the IIS pipeline event I want to hook onto, ReleaseRequestState.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;All the real processing is done by event handler methods, such as in this case, the method, AddFilter().&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;To put the footer on the page, AddFilter just adds a Response Filter to the response to this request.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This filter only applies to text/html content types where it can find that closing &amp;lt;body/&amp;gt; tag.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Response Filters require you to implement the Stream interface, which added the most lines to this module.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The real work of injecting html into the response, occurs in the override of the Write() method.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;For more on IIS7 Extensibility, check out my next two posts and this article, &lt;/FONT&gt;&lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/Getting-Started/An-End-to-End-Extensibility-Example-for-IIS7-Devel"&gt;&lt;FONT face=Calibri size=3&gt;An End-to-End Extensibility Example for IIS7 Developers&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Alright, so that’s everything I did in my talk.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Thanks again for attending if you did.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;I’m having the time of my life down here in Australia.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;I love the scenery, the wildlife, the beaches and the activities but most of all, the warm hospitality all the Aussies have shown me.&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1846337" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/ewoersch/archive/tags/TechEd/default.aspx">TechEd</category></item><item><title>Where to Find TechEd 2007 Pics....</title><link>http://blogs.iis.net/ewoersch/archive/2007/06/05/where-to-find-teched-2007-pics.aspx</link><pubDate>Tue, 05 Jun 2007 16:51:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1740692</guid><dc:creator>EWoersch</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/ewoersch/rsscomments.aspx?PostID=1740692</wfw:commentRss><comments>http://blogs.iis.net/ewoersch/archive/2007/06/05/where-to-find-teched-2007-pics.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;I've created an account on Flickr for sharing all the pictures of the IIS team at TechEd 2007 with the world.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;A href="http://www.flickr.com/photos/8728045@N06/"&gt;http://www.flickr.com/photos/8728045@N06/&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Go check it out, you never know, if you're at TechEd, you might just be in one of them.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Here are some highlights from Monday...&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/IMG_0416.JPG"&gt;&lt;IMG style="WIDTH: 512px; HEIGHT: 384px" height=384 src="http://blogs.iis.net/blogs/ewoersch/IMG_0416.JPG" width=512 border=0 mce_src="http://blogs.iis.net/blogs/ewoersch/IMG_0416.JPG"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;(me right before my IIS7 for ASP.NET Developers talk)&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/IMG_0437.JPG"&gt;&lt;IMG style="WIDTH: 512px; HEIGHT: 384px" height=384 src="http://blogs.iis.net/blogs/ewoersch/IMG_0437.JPG" width=512 border=0 mce_src="http://blogs.iis.net/blogs/ewoersch/IMG_0437.JPG"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;(Mai-lan and Sam preparing for their talk on Friday)&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/IMG_0438.JPG"&gt;&lt;IMG style="WIDTH: 512px; HEIGHT: 384px" height=384 src="http://blogs.iis.net/blogs/ewoersch/IMG_0438.JPG" width=512 border=0 mce_src="http://blogs.iis.net/blogs/ewoersch/IMG_0438.JPG"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;(Brian and Carlos teaching customers about IIS7)&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/IMG_0441.JPG"&gt;&lt;IMG style="WIDTH: 512px; HEIGHT: 384px" height=384 src="http://blogs.iis.net/blogs/ewoersch/IMG_0441.JPG" width=512 border=0 mce_src="http://blogs.iis.net/blogs/ewoersch/IMG_0441.JPG"&gt;&lt;/A&gt;&lt;BR&gt;(IIS MVP Scott Forsyth enjoying his time as staff for the IIS Booth at TechEd)&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/IMG_0450.JPG"&gt;&lt;IMG style="WIDTH: 512px; HEIGHT: 384px" height=384 src="http://blogs.iis.net/blogs/ewoersch/IMG_0450.JPG" width=512 border=0 mce_src="http://blogs.iis.net/blogs/ewoersch/IMG_0450.JPG"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;(Faith Allington delivering her great talk on IIS7 Shared Configuration)&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://blogs.iis.net/blogs/ewoersch/IMG_0438.JPG"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1740692" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/ewoersch/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/ewoersch/archive/tags/TechEd/default.aspx">TechEd</category></item></channel></rss>