<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Scott Forsyth's Blog</title><subtitle type="html">Postings on IIS, ASP.NET, SQL Server, Webfarms and general system admin.</subtitle><id>http://weblogs.asp.net/owscott/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/owscott/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2011-09-21T18:19:32Z</updated><entry><title>Flush IIS HTTP and FTP Logs to Disk</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2012/02/03/flush-http-and-ftp-logs-in-iis.aspx" /><id>http://weblogs.asp.net/owscott/archive/2012/02/03/flush-http-and-ftp-logs-in-iis.aspx</id><published>2012-02-04T04:11:13Z</published><updated>2012-02-04T04:11:13Z</updated><content type="html">&lt;p&gt;Today I wanted to find a way to flush the IIS FTP logs on-demand.&amp;#160; The logs for IIS FTP flush to disk every 6 minutes, and the HTTP logs every 1 minute (or 64kb).&amp;#160; This can make troubleshooting difficult when you don’t receive immediate access to the latest log data.&lt;/p&gt;  &lt;p&gt;After looking everywhere I could think of, from search engine searches to perusing through the &lt;a href="http://dotnetslackers.com/articles/iis/Mastering-IIS-Understanding-the-Schema-Week-19.aspx" target="_blank"&gt;IIS schema files&lt;/a&gt;, I figured I had better go to the source and ask &lt;a href="http://blogs.msdn.com/b/robert_mcmurray" target="_blank"&gt;Robert McMurray&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Sure enough, Robert had the answer and even &lt;a href="http://blogs.msdn.com/b/robert_mcmurray/archive/2012/02/03/programmatically-flushing-ftp-logs.aspx" target="_blank"&gt;wrote a blog post&lt;/a&gt; in response to my question with code examples for four scripting/programming languages (C#, VB.NET, JavaScript, VbScript).&lt;/p&gt;  &lt;p&gt;There is not a netsh or appcmd solution though, so the scripting or programming options are the way to do it.&amp;#160; Actually, you can also flush the logs by restarting the Microsoft FTP Service (ftpsvc) but, as you would assume, it will impact currently active FTP sessions.&lt;/p&gt;  &lt;p&gt;This blog post serves three purposes.&amp;#160; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;It’s a reference pointing to Robert’s examples &lt;/li&gt;    &lt;li&gt;I’ll include how to do the same for the HTTP logs &lt;/li&gt;    &lt;li&gt;I’ll provide a PowerShell example which I based on Robert’s examples &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;1. The reference is mentioned above already, but to give me something useful to write in this paragraph, I’ll include it again. &lt;a href="http://blogs.msdn.com/b/robert_mcmurray/archive/2012/02/03/programmatically-flushing-ftp-logs.aspx" target="_blank"&gt;Programmatically Flushing FTP Logs&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;2. For HTTP there is a method to flush the logs using netsh.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;netsh http flush logbuffer&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;This will immediately flush the HTTP logs for all sites.&lt;/p&gt;

&lt;p&gt;3. The FTP logs can be done from PowerShell too.&amp;#160; Here’s a script which is the PowerShell equivalent of Robert’s examples.&amp;#160; Just update $siteName, or pass it as a parameter to the script.&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;Param($siteName = &lt;span style="color: #006080"&gt;&amp;quot;Default Web Site&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;#Get MWA ServerManager&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;[System.Reflection.Assembly]::LoadFrom( &lt;span style="color: #006080"&gt;&amp;quot;C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll&amp;quot;&lt;/span&gt; ) | Out-Null&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;$serverManager = new-object Microsoft.Web.Administration.ServerManager &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;$config = $serverManager.GetApplicationHostConfiguration()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;#Get Sites Collection&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;$sitesSection = $config.GetSection(&lt;span style="color: #006080"&gt;&amp;quot;system.applicationHost/sites&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;$sitesCollection = $sitesSection.GetCollection()&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;#Find Site&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; ($item &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; $sitesCollection){&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($item.Attributes.Item($elementTagName).Value &lt;span style="color: #cc6633"&gt;-eq&lt;/span&gt; $siteName){&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        $site = $item&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;#Validation&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ($site &lt;span style="color: #cc6633"&gt;-eq&lt;/span&gt; $null) { &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    Write-Host &lt;span style="color: #006080"&gt;&amp;quot;Site '$siteName' not found&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!($ftpServer.ChildElements.Count)){&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    Write-Host &lt;span style="color: #006080"&gt;&amp;quot;Site '$siteName' does not have FTP bindings set&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;}&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;#Flush the Logs&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;$ftpServer = $site.ChildElements.Item(&lt;span style="color: #006080"&gt;&amp;quot;ftpServer&amp;quot;&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;$ftpServer.Methods.Item(&lt;span style="color: #006080"&gt;&amp;quot;FlushLog&amp;quot;&lt;/span&gt;).CreateInstance().Execute()&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I hope one of these programming/scripting options come in handy for times when you want immediate access to the latest FTP log data.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8280314" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="FTP" scheme="http://weblogs.asp.net/owscott/archive/tags/FTP/default.aspx" /><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /></entry><entry><title>IIS FTP User Isolation-Week 46</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2012/01/23/iis-ftp-user-isolation-week-46.aspx" /><id>http://weblogs.asp.net/owscott/archive/2012/01/23/iis-ftp-user-isolation-week-46.aspx</id><published>2012-01-23T16:34:37Z</published><updated>2012-01-23T16:34:37Z</updated><content type="html">&lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/IIS-FTP-User-Isolation-Week-46.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I’ve been looking forward to releasing this week’s video.&amp;#160; IIS FTP User isolation is an interesting topic because it offers a lot of power and flexibility but it’s not very intuitive because of how it’s managed.&lt;/p&gt;  &lt;p&gt;This week we walk through the five isolation modes to gain a full understanding of the IIS FTP method of configuration for user isolation.&lt;/p&gt;  &lt;p&gt;IIS FTP is a powerful application, but some of the flexibility is hidden through a unique convention based method of management. It’s easy to miss the fact that IIS FTP allows the ability to have multiple users who can be directed to different folders and be fully isolated from each other. For example, you can have a designer1 who has access to the whole site while designer2 has access to just project1 only, while—if you set it up correctly—you can feel confident that designer2 can’t gain more access than they are allowed.&lt;/p&gt;  &lt;p&gt;IIS FTP requires understanding a few core principles to manage it effectively and to ensure that you don’t overlook key security settings that would allow users to gain more access than they should. IIS FTP 7.5 offers five different isolation modes, each of which targets a different situation.&lt;/p&gt;  &lt;p&gt;This is now week 46 of a 52 week series for the web pro, and the 3rd of a 5 week mini-series on IIS FTP. You can view past and future weeks here: &lt;a href="http://dotnetslackers.com/projects/LearnIIS7/"&gt;http://dotnetslackers.com/projects/LearnIIS7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also, if you’re reading this early enough, I’m taking questions for the last couple weeks of the series.&amp;#160; Read more about it &lt;a href="http://weblogs.asp.net/owscott/archive/2011/12/18/accepting-questions-for-web-pro-series-q-amp-a.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/IIS-FTP-User-Isolation-Week-46.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8267305" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="FTP" scheme="http://weblogs.asp.net/owscott/archive/tags/FTP/default.aspx" /><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /></entry><entry><title>Redirecting Non-www to Domain Equivalent</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2012/01/05/redirecting-non-www-to-domain-equivalent.aspx" /><id>http://weblogs.asp.net/owscott/archive/2012/01/05/redirecting-non-www-to-domain-equivalent.aspx</id><published>2012-01-05T15:00:19Z</published><updated>2012-01-05T15:00:19Z</updated><content type="html">&lt;p&gt;A question came up on a &lt;a href="http://weblogs.asp.net/owscott/archive/2009/11/27/iis-url-rewrite-rewriting-non-www-to-www.aspx?CommentPosted=true#commentmessage"&gt;blog post of mine&lt;/a&gt; on how to redirect a domain name that doesn’t have www in it while retaining the original domain name.&amp;#160; Basically, to have a generic redirect to add on a www if it’s not already there.&lt;/p&gt;  &lt;p&gt;For example, how could you have &lt;em&gt;something.com &lt;/em&gt;always redirect to &lt;em&gt;www.something.com &lt;/em&gt;where &lt;em&gt;something&lt;/em&gt; could be any of a number of domain names that you manage.&lt;/p&gt;  &lt;p&gt;This is fully possible with URL Rewrite.&amp;#160; Here’s what the config looks like.&amp;#160; If you want a full walkthrough using the setup wizard then refer to &lt;a href="http://weblogs.asp.net/owscott/archive/2009/11/27/iis-url-rewrite-rewriting-non-www-to-www.aspx"&gt;my previous post&lt;/a&gt; for the details.&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;rule&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;non-www to www&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;stopProcessing&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;match&lt;/span&gt; &lt;span style="color: #ff0000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;.*&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;conditions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;input&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{HTTP_HOST}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;pattern&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;^[^\.]+\.[^\.]+$&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;conditions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;action&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Redirect&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://www.{HTTP_HOST}/{R:0}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;This rule watches for all 2 level domains and redirects to the same domain name and tacks on the www to the beginning.&amp;#160; So something.domain.com won’t be redirected, but domain.com will.&lt;/p&gt;

&lt;p&gt;Alternately, if visitors will come in through either http or https, you can ensure that this retains the protocol with 2 rules, one for each:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;rule&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;non-www to www http&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;stopProcessing&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;match&lt;/span&gt; &lt;span style="color: #ff0000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;.*&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;conditions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;input&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{HTTP_HOST}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;pattern&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;^[^\.]+\.[^\.]+$&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;input&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{HTTPS}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;pattern&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;off&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;conditions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;action&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Redirect&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://www.{HTTP_HOST}/{R:0}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;rule&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;non-www to www https&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;stopProcessing&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;match&lt;/span&gt; &lt;span style="color: #ff0000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;.*&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;conditions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;input&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{HTTP_HOST}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;pattern&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;^[^\.]+\.[^\.]+$&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;input&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{HTTPS}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;pattern&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;on&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;conditions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;action&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Redirect&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;https://www.{HTTP_HOST}/{R:0}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8225914" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="URL Rewrite" scheme="http://weblogs.asp.net/owscott/archive/tags/URL+Rewrite/default.aspx" /></entry><entry><title>IIS FTP and IIS Manager Users-Week 45</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2012/01/04/iis-ftp-and-iis-manager-users-week-45.aspx" /><id>http://weblogs.asp.net/owscott/archive/2012/01/04/iis-ftp-and-iis-manager-users-week-45.aspx</id><published>2012-01-04T14:27:49Z</published><updated>2012-01-04T14:27:49Z</updated><content type="html">&lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/IIS-FTP-and-IIS-Manager-Users-Week-45.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;IIS FTP supports a new type of user called IIS Manager Users. This type of user can be used instead of Windows Local or Active Directory Users. &lt;/p&gt;  &lt;p&gt;They are useful if you want to manage a number of FTP users but don’t want to use Windows Local Users or you want to keep IIS FTP separate from the operating system users. They are also compatible with Shared Configuration so you can create the users once and they will work on all servers in a web farm.&lt;/p&gt;  &lt;p&gt;To properly manage IIS Manager users with IIS FTP, there are a few things to consider for security and configuration. This week I cover everything you need to know to properly support IIS Manager Users with IIS FTP. This is week 45 of a 52 week series, and the 2nd of a 4 week mini-series on IIS FTP.&lt;/p&gt;  &lt;p&gt;Also, if you’re reading this early enough, I’m taking questions for the last couple weeks of the series.&amp;#160; Read more about it &lt;a href="http://weblogs.asp.net/owscott/archive/2011/12/18/accepting-questions-for-web-pro-series-q-amp-a.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/IIS-FTP-and-IIS-Manager-Users-Week-45.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8220329" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="FTP" scheme="http://weblogs.asp.net/owscott/archive/tags/FTP/default.aspx" /><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /></entry><entry><title>Accepting Questions for Web Pro Series Q&amp;A</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/12/18/accepting-questions-for-web-pro-series-q-amp-a.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/12/18/accepting-questions-for-web-pro-series-q-amp-a.aspx</id><published>2011-12-19T03:36:51Z</published><updated>2011-12-19T03:36:51Z</updated><content type="html">&lt;p&gt;If you’ve been following my 52-week series you most likely noticed that we’re nearing the end.&amp;#160; This evening, for example, I’m recording week 47.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.linkedin.com/in/ptomasevic"&gt;Predrag Tomasevic&lt;/a&gt; (see &lt;a href="http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=4273880"&gt;developer related articles&lt;/a&gt; he’s written) sent me an email and made a suggestion to make the last couple videos as a Q&amp;amp;A.&amp;#160; I thought that would be a great idea.&amp;#160; Let’s do it!&amp;#160; I’ll accept questions for the next month or so and toward the end of January I’ll record the final two weeks as Q&amp;amp;A sessions.&lt;/p&gt;  &lt;p&gt;Please use the comments section below to ask IIS or IIS related questions which you would like to see answered.&amp;#160; Note that I approve all comments before they show up, otherwise the spammer overwhelm the comments, so your question may not show up immediately.&lt;/p&gt;  &lt;p&gt;I’m targeting quicker Q&amp;amp;A questions rather than full walkthroughs, but feel free to ask any type of question you want and I’ll take on whichever questions that I’ll have time for, or which I hope to be able to give a reasonably worthwhile answer for. &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://weblogs.asp.net/blogs/owscott/wlEmoticon-winkingsmile_7B3450B4.png" /&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8141988" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /></entry><entry><title>IIS FTP Basics–Week 44</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/12/13/iis-ftp-basics-week-44.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/12/13/iis-ftp-basics-week-44.aspx</id><published>2011-12-13T17:51:45Z</published><updated>2011-12-13T17:51:45Z</updated><content type="html">&lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/IIS-FTP-Basics-Week-44.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The FTP (File Transfer Protocol) protocol has been in wide use for years and is still widely used today. It's used for transferring files between locations and practically useful for deployment websites from a dev machine or continuous integration server to staging or production websites.&lt;/p&gt;  &lt;p&gt;Microsoft IIS FTP has evolved over the years and the latest versions are particularly powerful. It now supports all standard functionality that you would expect from an FTP server, plus FTP over TLS (secure FTP), host headers, IIS Manager user permissions, IP restrictions, greatly improved isolation options, and more.&lt;/p&gt;  &lt;p&gt;This week's video lesson is the start of a 4-week mini-series on IIS FTP. The four weeks will include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Week 1: IIS FTP Basics &lt;/li&gt;    &lt;li&gt;Week 2: IIS FTP and IIS Manager Users &lt;/li&gt;    &lt;li&gt;Week 3: IIS FTP and User Isolation &lt;/li&gt;    &lt;li&gt;Week 4: IIS FTP Firewall settings and Troubleshooting&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This first week I cover installing IIS FTP on IIS 7.0 and 7.5, setting up the site, authentication and authorization, security, and other general FTP discussion.&lt;/p&gt;  &lt;p&gt;This is now week 44 of a 52 week series for the web pro. You can view past and future weeks here: &lt;a href="http://dotnetslackers.com/projects/LearnIIS7/"&gt;http://dotnetslackers.com/projects/LearnIIS7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/IIS-FTP-Basics-Week-44.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8116925" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="FTP" scheme="http://weblogs.asp.net/owscott/archive/tags/FTP/default.aspx" /><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /></entry><entry><title>IIS 7.x Classic and Integrated Pipeline Modes-Week 43</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/12/05/iis-7-x-classic-and-integrated-pipeline-modes-week-43.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/12/05/iis-7-x-classic-and-integrated-pipeline-modes-week-43.aspx</id><published>2011-12-05T23:34:24Z</published><updated>2011-12-05T23:34:24Z</updated><content type="html">&lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/IIS-7x-Classic-and-Integrated-Pipeline-Modes-Week-43.aspx" target="_blank"&gt;video here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;IIS 7 has two application pool pipeline modes: Classic and Integrated. Using Integrated mode is the ideal since it allows forms authentication for all types of page requests—not just ASP.NET pages—has tighter integration with the entire pipeline, and will be leveraged by more native and 3&lt;sup&gt;rd&lt;/sup&gt; party apps over time.&lt;/p&gt;  &lt;p&gt;However, you may run into a “HTTP Error 500.22 - Internal Server Error” when trying to run your site in Integrated mode. This week we look at the differences and find out how to migrate a configuration file from IIS6 or IIS 7 Classic mode to IIS 7 Integrated mode.&lt;/p&gt;  &lt;p&gt;The article referenced in the video can be found &lt;a href="http://mvolo.com/blogs/serverside/archive/2007/12/08/IIS-7.0-Breaking-Changes-ASP.NET-2.0-applications-Integrated-mode.aspx"&gt;here&lt;/a&gt;. This gives a list of breaking changes with integration mode.&lt;/p&gt;  &lt;p&gt;This is now week 43 of a 52 week series for the web pro. You can view past and future weeks here: &lt;a href="http://dotnetslackers.com/projects/LearnIIS7/"&gt;http://dotnetslackers.com/projects/LearnIIS7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/IIS-7x-Classic-and-Integrated-Pipeline-Modes-Week-43.aspx" target="_blank"&gt;video here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8094227" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="ASP.NET" scheme="http://weblogs.asp.net/owscott/archive/tags/ASP.NET/default.aspx" /><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /></entry><entry><title>Setting an aspnet.config File per Application Pool</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/12/01/setting-an-aspnet-config-file-per-application-pool.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/12/01/setting-an-aspnet-config-file-per-application-pool.aspx</id><published>2011-12-01T17:32:59Z</published><updated>2011-12-01T17:32:59Z</updated><content type="html">&lt;p&gt;The aspnet.config file is a little known config file which is supported by ASP.NET 2.0 and greater.&amp;#160; Generally it lives in the root of the framework folder, for example:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet.config&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet.config&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This config file is further leveraged in ASP.NET 4.0 for concurrency and threading.&amp;#160; For example, you can set maxConcurrentRequestsPerCPU, maxConcurrentThreadsPerCPU and requestQueueLimit, in addition to the previous runtime settings.&lt;/p&gt;

&lt;p&gt;In Windows Server 2008 R2 (IIS 7.5) support was added to allow different settings per application pool.&amp;#160; Where previously the settings had to be applied to the whole framework version, now they can be specific to each app pool.&amp;#160; It does this by allowing you to create a custom aspnet.config file per app pool.&amp;#160; You can save them wherever you want on disk and IIS will pick them up when the app pool starts.&lt;/p&gt;

&lt;p&gt;This is supported by a new attribute for the IIS app pool called CLRConfigFile mentioned in &lt;a href="http://msdn.microsoft.com/en-us/library/aa347554(VS.90).aspx" target="_blank"&gt;this MSDN article&lt;/a&gt;.&amp;#160; There is no default value which means that if you don’t set it, it will read the framework’s aspnet.config file and not look for additional files.&lt;/p&gt;

&lt;p&gt;It doesn’t appear to be configurable from the application pool settings in IIS Manager so you must use any of the manual ways to set it.&amp;#160; &lt;em&gt;appcmd &lt;/em&gt;is probably the easiest.&amp;#160; Here’s what it will look like, notice the two variables are the path and the application pool name:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;%windir%\System32\inetsrv\appcmd.exe set config  -section:system.applicationHost/applicationPools /[name='DefaultAppPool'].CLRConfigFile:&amp;quot;c:\inetpub\AppPoolClrConfig\DefaultAppPool_aspnet.config&amp;quot;  /commit:apphost&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;Below is another copy of the same, but as a template.&amp;#160; Just swap out the {AppPoolName} and {FilePath} with your settings. (run appcmd from %windir%\System32\inetsrv)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;appcmd.exe set config&amp;#160; -section:system.applicationHost/applicationPools /[name='{AppPoolName}'].CLRConfigFile:&amp;quot;{FilePath}&amp;quot;&amp;#160; /commit:apphost&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Note that the framework aspnet.config file is still used so only differences per app pool need to be set here.&lt;/p&gt;

&lt;p&gt;Here’s an example of what the file can contain:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;UTF-8&amp;quot;&lt;/span&gt; ?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;runtime&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;legacyUnhandledExceptionPolicy&lt;/span&gt; &lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;legacyImpersonationPolicy&lt;/span&gt; &lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;alwaysFlowImpersonationPolicy&lt;/span&gt; &lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SymbolReadingPolicy&lt;/span&gt; &lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;shadowCopyVerifyByTimestamp&lt;/span&gt; &lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;runtime&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;startup&lt;/span&gt; &lt;span style="color: #ff0000"&gt;useLegacyV2RuntimeActivationPolicy&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;system.web&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;applicationPool&lt;/span&gt; &lt;br /&gt;        &lt;span style="color: #ff0000"&gt;maxConcurrentRequestsPerCPU&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;5000&amp;quot;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #ff0000"&gt;maxConcurrentThreadsPerCPU&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;br /&gt;        &lt;span style="color: #ff0000"&gt;requestQueueLimit&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;5000&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;system.web&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;As for disk permissions, the app pool will try to read the file using the app pool’s identity.&amp;#160; Since this file is probably not a security risk you can grant &lt;em&gt;Users &lt;/em&gt;with read permissions and it will work.&amp;#160; Alternately, you can properly lock down the file like so:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;icacls c:\inetpub\AppPoolClrConfig\DefaultWebSite_aspnet.config /grant &amp;quot;IIS APPPOOL\DefaultAppPool&amp;quot;:(R)&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;Be sure that the file doesn’t have inheritance or other more permissive permissions already set. &lt;/p&gt;

&lt;p&gt;Now you can make adjustments per app pool in each of the corresponding config files, and it’s also fine to point multiple app pools to the same config file.&lt;/p&gt;

&lt;p&gt;Changes are picked up when the app pool is created, so after applying any changes be sure to recycle the app pool.&amp;#160; &lt;/p&gt;

&lt;p&gt;Note also that this is for IIS 7.5 and greater, and the applicationPool settings only apply in Integrated Pipeline mode.&lt;/p&gt;

&lt;p&gt;Here are some good links with further reading:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;system.web&amp;gt; applicationPool settings: &lt;a title="http://msdn.microsoft.com/en-us/library/dd560842.aspx" href="http://msdn.microsoft.com/en-us/library/dd560842.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd560842.aspx&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;ASP.NET Thread Usage article: &lt;a href="http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx"&gt;http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;applicationPools config settings in IIS 7.5: &lt;a href="http://msdn.microsoft.com/en-us/library/aa347554(VS.90).aspx"&gt;http://msdn.microsoft.com/en-us/library/aa347554(VS.90).aspx&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8084264" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="ASP.NET" scheme="http://weblogs.asp.net/owscott/archive/tags/ASP.NET/default.aspx" /><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /></entry><entry><title>Change Password vs. Reset Password-Week 42</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/11/30/change-password-vs-reset-password-week-42.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/11/30/change-password-vs-reset-password-week-42.aspx</id><published>2011-11-30T14:19:59Z</published><updated>2011-11-30T14:19:59Z</updated><content type="html">&lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/Change-Password-vs-Reset-Password-Week42.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The differences between change password and reset password are not well known. This week's video walks through the differences and shows them in action. Tune in to find out more about password management. &lt;/p&gt;  &lt;p&gt;It wasn’t until fairly recently that I realized that there is a difference between a change password and a reset password. One is safe, while the other not so much. I remember when Windows Server 2003 was first released and resetting a user’s password had a distinct warning about irreversible loss of information. I wondered why it wasn’t mentioned in previous operating systems, but I also wondered if it was true since I never personally noticed any impact.&lt;/p&gt;  &lt;p&gt;It wasn’t until about a year ago when I really dug in to understand this topic better. This week’s lesson covers the differences between a change password and a reset password. In this video we also take a look at it in action so that we have a solid understanding of the topic, and briefly discuss how it works for programming APIs too. &lt;/p&gt;  &lt;p&gt;This is now week 42 of a 52 week series for the web pro. You can view past and future weeks here: &lt;a href="http://dotnetslackers.com/projects/LearnIIS7/"&gt;http://dotnetslackers.com/projects/LearnIIS7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/Change-Password-vs-Reset-Password-Week42.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8082233" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /><category term="Windows Server" scheme="http://weblogs.asp.net/owscott/archive/tags/Windows+Server/default.aspx" /></entry><entry><title>URL Rewrite city.domain.com to domain.com/city</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/11/23/url-rewrite-city-domain-com-to-domain-com-city.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/11/23/url-rewrite-city-domain-com-to-domain-com-city.aspx</id><published>2011-11-23T19:09:59Z</published><updated>2011-11-23T19:09:59Z</updated><content type="html">&lt;p&gt;An IIS 7.x URL Rewrite question that comes up often is how to redirect something.domain.com to domain.com/city.&lt;/p&gt;  &lt;p&gt;Here’s an example URL Rewrite rule to accomplish that:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;rule&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;CName to URL&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;stopProcessing&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;match&lt;/span&gt; &lt;span style="color: #ff0000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;.*&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;conditions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;input&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{HTTP_HOST}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;pattern&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;^(?!www)(.*)\.domain\.com$&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;conditions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;action&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Redirect&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://domain.com/{C:1}/{R:0}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This will &lt;strong&gt;redirect&lt;/strong&gt; &lt;em&gt;http://anything_except_www.domain.com &lt;/em&gt;to &lt;em&gt;http://domain.com/anything_except_www&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It will also maintain the URL and querystring, so &lt;em&gt;http://subdomain.domain.com/aboutus?more=info &lt;/em&gt;will redirect to &lt;em&gt;http://domain.com/subdomain/aboutus?more=info&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It’s also possible to do this with a &lt;strong&gt;rewrite &lt;/strong&gt;rule instead so that the original URL is maintained while the server sees the rewritten path.&amp;#160; That rewrite rule will look like this:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;rule&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;CName to URL - Rewrite&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;stopProcessing&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;match&lt;/span&gt; &lt;span style="color: #ff0000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;.*&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;conditions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;input&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{HTTP_HOST}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;pattern&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;^(?!www)(.*)\.domain\.com$&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;conditions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;action&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Rewrite&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;/{C:1}/{R:0}&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;rule&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;   &lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Basically this rule will look like&lt;em&gt; http://subdomain.domain.com/aboutus/&lt;/em&gt; to the site visitor but it will really hit &lt;em&gt;siteroot/subdomain/aboutus/&lt;/em&gt; on the server.&lt;/p&gt;

&lt;p&gt;Note that there are other considerations for rewrites which are covered in more depth &lt;a href="http://weblogs.asp.net/owscott/archive/2010/01/26/iis-url-rewrite-hosting-multiple-domains-under-one-site.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8071150" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="URL Rewrite" scheme="http://weblogs.asp.net/owscott/archive/tags/URL+Rewrite/default.aspx" /></entry><entry><title>Line Numbering in Notepad-Week 41</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/11/21/line-numbering-in-notepad-week-41.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/11/21/line-numbering-in-notepad-week-41.aspx</id><published>2011-11-21T15:28:32Z</published><updated>2011-11-21T15:28:32Z</updated><content type="html">&lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/Line-numbering-in-Notepad-week41.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Notepad is so simple, yet so useful. Yet, at times the &amp;quot;Go To&amp;quot; appears to break and doesn't work as expected. This week's video is short and sweet. Learn about line numbering in notepad.&lt;/p&gt;  &lt;p&gt;One of my all-time favorite applications is notepad. You may think I’m joking, but I’ve grown quite fond of notepad over the years. Like a faithful friend, always there for you when you need it. Whether it’s an old computer or new, it opens instantly. I can’t remember notepad ever crashing. Wish I could say that for most other applications.&lt;/p&gt;  &lt;p&gt;This week’s lesson is a quick one, but if you’ve ever run into issues with line numbering in notepad, I hope you find it useful. I remember the first time the “Go To” feature didn’t work in notepad for me. It took me a while to figure it out so I hope to save you the grief that I went through.&lt;/p&gt;  &lt;p&gt;Watch this week’s video for a couple quick tips on the tried and true notepad.&lt;/p&gt;  &lt;p&gt;This is now week 41 of a 52 week series for the web pro. You can view past and future weeks here: &lt;a href="http://dotnetslackers.com/projects/LearnIIS7/"&gt;http://dotnetslackers.com/projects/LearnIIS7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/Line-numbering-in-Notepad-week41.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8067351" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /></entry><entry><title>Resolving Blocked Ports Through Windows Firewall-Week 40</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/10/28/resolving-blocked-ports-through-windows-firewall-week-40.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/10/28/resolving-blocked-ports-through-windows-firewall-week-40.aspx</id><published>2011-10-28T22:07:51Z</published><updated>2011-10-28T22:07:51Z</updated><content type="html">&lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/Resolving-Legit-Blocked-Ports-Through-Windows-Week40.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This week's video shows how to easily and quickly track down IPs and ports that need to be opened to allow legitimate traffic through the firewall. &lt;/p&gt;  &lt;p&gt;Part of being a web server administrator is keeping your firewalls properly configured and troubleshooting to track down the necessary ports and IPs that have legitimate reasons to pass through your firewall. It’s not unusual to run into difficulty trying to find out which ports are required by a particular application. Sometimes you can determine which ports to allow by reading the specifications of the application. However, there are times when documentation is limited or you deal with a custom app.&lt;/p&gt;  &lt;p&gt;This is now week 40 of a 52 week series for the web pro. You can view past and future weeks here: &lt;a href="http://dotnetslackers.com/projects/LearnIIS7/"&gt;http://dotnetslackers.com/projects/LearnIIS7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/Resolving-Legit-Blocked-Ports-Through-Windows-Week40.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8019196" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="Troubleshooting" scheme="http://weblogs.asp.net/owscott/archive/tags/Troubleshooting/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /><category term="Windows Server" scheme="http://weblogs.asp.net/owscott/archive/tags/Windows+Server/default.aspx" /></entry><entry><title>Introduction to Log Parser-Week 39</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/10/17/introduction-to-log-parser-week-39.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/10/17/introduction-to-log-parser-week-39.aspx</id><published>2011-10-17T15:22:45Z</published><updated>2011-10-17T15:22:45Z</updated><content type="html">&lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/Introduction-to-Log-Parser-Week-39.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Log Parser is a powerful tool that every web administrator should become familiar with. With Log Parser we can do deep troubleshooting and data mining of the IIS Logs, Event Viewer, the File System, other file types and more.&lt;/p&gt;  &lt;p&gt;Useful examples of parsing the IIS logs include: finding long running pages, finding all error pages with a 500 status code, all requests from a particular IP (potential hacking attempt), and much more.&lt;/p&gt;  &lt;p&gt;This week is an introduction to Log Parser with walkthroughs covering Event Viewer, IIS logs, various filtering, different output formats, how to find your own way around, Log Parser Lizard GUI, and more. Log parser is a tool that no web administrator should be without.&lt;/p&gt;  &lt;p&gt;This is now the 39th week of the entire series. You can view past and future weeks here: &lt;a href="http://dotnetslackers.com/projects/LearnIIS7/"&gt;http://dotnetslackers.com/projects/LearnIIS7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/Introduction-to-Log-Parser-Week-39.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7996016" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="Troubleshooting" scheme="http://weblogs.asp.net/owscott/archive/tags/Troubleshooting/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /></entry><entry><title>High Availability for ARR-Week 38</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/10/07/high-availability-for-arr-week-38.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/10/07/high-availability-for-arr-week-38.aspx</id><published>2011-10-07T16:44:53Z</published><updated>2011-10-07T16:44:53Z</updated><content type="html">&lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/High-Availability-for-ARR-Week-38.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Note: This week’s video got stuck in the publishing process so sorry for the delay, but here it is.&amp;#160; Next week I’ll move on to some other topics besides web farms, to mix it up.&lt;/p&gt;  &lt;p&gt;Application Request Routing (ARR) does not have high availability built in, so it's up to us to implement a solution to ensure that ARR doesn't become a single point of failure. Options include hardware load balancers, other software load balancers, or two Microsoft options-namely NLB and Clustering Services.&lt;/p&gt;  &lt;p&gt;Today's video discusses these options and then takes us on a walkthrough of setting up Microsoft's Network Load Balancing(NLB) solution. There are certain considerations to ensure that NLB works with your network and that it properly health tests to ensure that a failed node is automatically taken out of rotation.&lt;/p&gt;  &lt;p&gt;For your reference, the following four links were mentioned in the video:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.cisco.com/en/US/products/hw/switches/ps708/products_configuration_example09186a0080a07203.shtml"&gt;Catalyst Switches for Microsoft Network Load Balancing Configuration Example&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.orcsweb.com/blog/jeff/high-cpu-on-cisco-ios-with-msft-nlb-multicast-cluster/"&gt;High CPU on Cisco 4500 with MSFT NLB multicast cluster&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc307934%28VS.85%29.aspx"&gt;Monitoring Application Level Health&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/970759/EN-US"&gt;Configuring IIS 7.0 World Wide Web Publishing Service in a Microsoft Windows Server 2008 failover cluster&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This is now the 13th week in a mini-series on web farms, and the 38th week of the entire series. You can view past and future weeks here:&lt;a href="http://dotnetslackers.com/projects/LearnIIS7/"&gt;http://dotnetslackers.com/projects/LearnIIS7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/High-Availability-for-ARR-Week-38.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7986313" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="ARR" scheme="http://weblogs.asp.net/owscott/archive/tags/ARR/default.aspx" /><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /></entry><entry><title>ARR Tricks to Share with Web Server-Week 37</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/owscott/archive/2011/09/21/arr-tricks-to-share-with-web-server-week-37.aspx" /><id>http://weblogs.asp.net/owscott/archive/2011/09/21/arr-tricks-to-share-with-web-server-week-37.aspx</id><published>2011-09-21T22:19:32Z</published><updated>2011-09-21T22:19:32Z</updated><content type="html">&lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/ARR-Tricks-to-Share-with-Web-Server-Week-37.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This video covers two specific tricks to allow the Application Request Routing (ARR) and Web roles to share the same server. This is useful if you have multiple servers and can't setup dedicated servers for ARR, or even if you want to leverage ARR's functionality on the same server as the website.&lt;/p&gt;  &lt;p&gt;In recent weeks we’ve been looking at Application Request Routing (ARR) and how to use it in your environment. Since it is a service that lives on a Windows server, it is possible to have the ARR role on the same server(s) as the web role. &lt;/p&gt;  &lt;p&gt;My recommendation is to give dedicated servers to the ARR role if possible. The two reasons why I recommend this is for 1) troubleshooting reasons since it’s a bit more difficult to troubleshoot URL Rewrite rules when both roles are on the same server and 2) to protect the ARR servers (very low failure rate + low performance requirements) from the web servers (higher failure rate + higher performance requirements).&lt;/p&gt;  &lt;p&gt;However, there are still valid reasons to collapse the two roles in a single server, or into multiple ARR+WEB servers. This video discusses this option and shows two tricks on how to do this successfully.&lt;/p&gt;  &lt;p&gt;This is now the 12th week in a mini-series on web farms, and the 37th week of the entire series. You can view past and future weeks here: &lt;a href="http://dotnetslackers.com/projects/LearnIIS7/"&gt;http://dotnetslackers.com/projects/LearnIIS7/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can find this week’s &lt;a href="http://dotnetslackers.com/articles/iis/ARR-Tricks-to-Share-with-Web-Server-Week-37.aspx"&gt;video here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7960626" width="1" height="1"&gt;</content><author><name>OWScott</name><uri>http://weblogs.asp.net/members/OWScott.aspx</uri></author><category term="ARR" scheme="http://weblogs.asp.net/owscott/archive/tags/ARR/default.aspx" /><category term="IIS" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS/default.aspx" /><category term="IIS7" scheme="http://weblogs.asp.net/owscott/archive/tags/IIS7/default.aspx" /><category term="Web Pro Series" scheme="http://weblogs.asp.net/owscott/archive/tags/Web+Pro+Series/default.aspx" /></entry></feed>
