<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.iis.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Dave&amp;#39;s Blog</title><link>http://blogs.iis.net/davcox/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Debug Build: 20510.895)</generator><item><title>Where is Execute Permission in the UI?</title><link>http://blogs.iis.net/davcox/archive/2008/09/05/where-is-execute-permission-in-the-ui.aspx</link><pubDate>Fri, 05 Sep 2008 17:26:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2603468</guid><dc:creator>davcox</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=2603468</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=2603468</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2008/09/05/where-is-execute-permission-in-the-ui.aspx#comments</comments><description>A lot has changed in the IIS7 UI from IIS6, sometimes it can be hard to find out where to set certain things such as the execute permission for CGI's and ISAPI's. Yesterday, I was trying to get a CGI to execute, but couldn't find where to set it. In IIS7...(&lt;a href="http://blogs.iis.net/davcox/archive/2008/09/05/where-is-execute-permission-in-the-ui.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2603468" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/davcox/archive/tags/UI/default.aspx">UI</category><category domain="http://blogs.iis.net/davcox/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://blogs.iis.net/davcox/archive/tags/IIS7/default.aspx">IIS7</category></item><item><title>Accessing custom properties at runtime through managed modules (part 2)</title><link>http://blogs.iis.net/davcox/archive/2007/11/21/accessing-custom-properties-at-runtime-through-managed-modules-part-2.aspx</link><pubDate>Wed, 21 Nov 2007 19:53:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2019494</guid><dc:creator>davcox</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=2019494</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=2019494</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2007/11/21/accessing-custom-properties-at-runtime-through-managed-modules-part-2.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;Ok, now I want to do something in my managed module during runtime that will only read from my custom configuration properties.&lt;/P&gt;
&lt;P mce_keep="true"&gt;I need someplace to start ... like a starter kit!&amp;nbsp; :)&amp;nbsp; &lt;BR&gt;&lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1302&amp;amp;g=6" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1302&amp;amp;g=6"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1302&amp;amp;g=6&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;This helps me get started, but it doesn’t tell me about the other events to get callbacks on as my module runs ... I realized finally that an IIS managed module is really an ASP.net module as far as it's ability to interface with&amp;nbsp;the IIS pipeline.&amp;nbsp; So I took a look at the ASP.net integration articles.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;Finally, I found this article:&lt;BR&gt;&lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Hosting-Web-Applications/ASP-NET/ASP-NET-Integration-with-IIS7?Page=3" mce_href="http://www.iis.net/articles/view.aspx/IIS7/Hosting-Web-Applications/ASP-NET/ASP-NET-Integration-with-IIS7?Page=3"&gt;http://www.iis.net/articles/view.aspx/IIS7/Hosting-Web-Applications/ASP-NET/ASP-NET-Integration-with-IIS7?Page=3&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;I have my modules working, the starter kit was very helpful to get my Visual studio project&amp;nbsp;setup properly.&amp;nbsp;&amp;nbsp;Athough it didn’t have a reference to&amp;nbsp;Microsoft.Web.Administration which may be a common issue; something to add for future starter kits.&amp;nbsp; This is an important issue that I realized later.&amp;nbsp; Most asp.net modules will be using System.Configuration which does not support the&amp;nbsp;custom properties you add through IIS and the custom schema we've described.&amp;nbsp; Instead, you must use Microsoft.Web.Administration to access this kind of configuration.&amp;nbsp; These two API's unfortunately don't always play well together, so you need to know when you're using which one and why.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;Ok, now to deploy my module … seems hard to find a good example of doing this … probably some arcane appcmd command that would do it. I’ll copy and paste config for now … oops, the web.config default in the starter kit didn’t have preCondition="managedHandler" in there … &lt;/P&gt;
&lt;P mce_keep="true"&gt;Ok, I copied my module to the test machine and am trying to make requests ... but it gives me an error saying that it cannot read configuration!&amp;nbsp; Hmm, why is this?&amp;nbsp; What would be different about using the same configuration code in a console (running as the Administrator) and in the IIS pipeline (running as Network Service).&amp;nbsp; Well, the permission's were set properly, both of them can read configuration.&amp;nbsp; But I didn't realize that ServerManager object (in Microsoft.Web.Administration) opens up config for write access, which is not allowed!&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;I have to use WebConfigurationManager instead of ServerManager …and luckily MSDN helps me: &lt;A href="http://msdn2.microsoft.com/en-us/library/system.web.configuration.webconfigurationmanager.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/system.web.configuration.webconfigurationmanager.aspx"&gt;http://msdn2.microsoft.com/en-us/library/system.web.configuration.webconfigurationmanager.aspx&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;And&amp;nbsp;I found out later that Carlos had just blogged about this!&amp;nbsp; but the search engines had not yet found this great blog post:&lt;BR&gt;&lt;A href="http://blogs.msdn.com/carlosag/archive/2007/09/28/IIS7ManagedConfigurationAPI.aspx" mce_href="http://blogs.msdn.com/carlosag/archive/2007/09/28/IIS7ManagedConfigurationAPI.aspx"&gt;http://blogs.msdn.com/carlosag/archive/2007/09/28/IIS7ManagedConfigurationAPI.aspx&lt;/A&gt;&amp;nbsp; This is where Carlos goes into some detail about the difference between using design-time and run-time API's (which he implemented).&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;Great!!&amp;nbsp; Now my module is working ... here is a code snippet:&lt;/P&gt;
&lt;P mce_keep="true"&gt;using System;&lt;BR&gt;using System.Collections.Generic;&lt;BR&gt;using System.IO;&lt;BR&gt;using System.Web;&lt;BR&gt;using System.Diagnostics;&lt;BR&gt;using Microsoft.Web.Administration;&lt;/P&gt;
&lt;P mce_keep="true"&gt;namespace MyIIS7Modules&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class PonyModule : IHttpModule&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Init(HttpApplication application)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Subscribe to the BeginRequest event &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; application.BeginRequest += new EventHandler(this.CheckForPony);&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Dispose()&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void CheckForPony(Object source, EventArgs e)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpApplication application = (HttpApplication)source;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpContext context = application.Context;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string HttpUrl = application.Request.Url.ToString().ToLower();&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// if this is a PONY request, then let's handle it, otherwise just continue&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (HttpUrl.Contains("pony"))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the custom configuration section from that file&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConfigurationSection section = WebConfigurationManager.GetSection("ENC-Pony");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool PonyAnswer = (bool)section.GetAttributeValue("CanIHaveAPonyPlease");&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; application.Response.StatusCode = 200;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (PonyAnswer)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ResponseEntity += ("&amp;lt;H1&amp;gt;" + section.GetAttributeValue("YesResponse") + "&amp;lt;/H1&amp;gt;&amp;lt;BR&amp;gt;");&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;At a later date, I'll post my entire module with a brief overview of it's capabilities and how to use it.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;Dave &lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2019494" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/davcox/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/davcox/archive/tags/Config/default.aspx">Config</category><category domain="http://blogs.iis.net/davcox/archive/tags/Managed+Code/default.aspx">Managed Code</category></item><item><title>Accessing custom properties at runtime through managed modules (part 1)</title><link>http://blogs.iis.net/davcox/archive/2007/11/21/accessing-custom-properties-at-runtime-through-managed-modules-part-1.aspx</link><pubDate>Wed, 21 Nov 2007 19:25:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2019436</guid><dc:creator>davcox</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=2019436</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=2019436</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2007/11/21/accessing-custom-properties-at-runtime-through-managed-modules-part-1.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;Following on my last post in developing my module for app-building week, I want to talk about how I wrote the code for my managed module (C# code).&amp;nbsp; So far, I have custom configuration schema that could be accessed through various built-in tools and I know that I can access custom configuration through managed code, but I needed to find some samples.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;So I searched iis.net for some articles, tools and forum posts about this problem.&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;I found this article first:&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/Extending-IIS7-Configuration/Extending-IIS7-Schema-and-Accessing-the-custom-sec?Page=2"&gt;http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/Extending-IIS7-Configuration/Extending-IIS7-Schema-and-Accessing-the-custom-sec?Page=2&lt;/A&gt;&amp;nbsp; &lt;BR&gt;This example isn’t so detailed for a c# newbie like myself and I needed an example to access collections.&amp;nbsp; &lt;BR&gt;I found an example of code accessing collections here:&amp;nbsp; &lt;A href="http://forums.iis.net/t/1026445.aspx"&gt;http://forums.iis.net/t/1026445.aspx&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;And another one here:&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/Using-Microsoft-Web-Administration/Accessing-Configuration-Sections-using-Microsoft-W" mce_href="http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/Using-Microsoft-Web-Administration/Accessing-Configuration-Sections-using-Microsoft-W"&gt;http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/Using-Microsoft-Web-Administration/Accessing-Configuration-Sections-using-Microsoft-W&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;With these examples, I was able to write a little console application that would read and write my configuration.&amp;nbsp; A good start.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;Here is my code:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNoSpacing style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style="mso-spacerun: yes"&gt;using System;&lt;BR&gt;using Microsoft.Web.Administration;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt; 
&lt;P mce_keep="true"&gt;namespace PonyConsole&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Program&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main(string[] args)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initialize the server manager used to administer the sections&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerManager serverManager = new ServerManager();&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the applicationHost.config file&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Configuration config = serverManager.GetApplicationHostConfiguration();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the custom configuration section from that file&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConfigurationSection section = config.GetSection("ENC-Pony");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Output the default value of the booleanProperty&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(section.GetAttributeValue("CanIHaveAPonyPlease"));&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the new value of the booleanProperty&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; section.SetAttributeValue("CanIHaveAPonyPlease", true);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // add an item to the collection&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConfigurationElementCollection collection = section.GetCollection("ponies");&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConfigurationElement newElement = collection.CreateElement();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newElement.SetAttributeValue("PonyLocation", "HttpLink");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newElement.SetAttributeValue("value", "c:\\pic");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; collection.Add(newElement); &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Update the config file with the changes that you have made&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serverManager.CommitChanges();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Finished writing ... ");&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Output the default value of the booleanProperty&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(section.GetAttributeValue("CanIHaveAPonyPlease"));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("YesResponse is: " + section.GetAttributeValue("YesResponse"));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("NoResponse is: " + section.GetAttributeValue("NoResponse"));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (ConfigurationElement element in section.GetCollection("ponies"))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(element.GetAttribute("PonyLocation").Value);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(element.GetAttribute("value").Value);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;At this point I had successfully written code using our new managed interface to read and write to my custom configuration properties.&amp;nbsp; Very exciting ... next post is how do I make this work in the context of an IIS pipeline module.&amp;nbsp; &lt;/P&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2019436" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/davcox/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/davcox/archive/tags/Config/default.aspx">Config</category></item><item><title>Adding simple custom schema to IIS Configuration</title><link>http://blogs.iis.net/davcox/archive/2007/10/31/adding-simple-custom-schema-to-iis-configuration.aspx</link><pubDate>Wed, 31 Oct 2007 16:27:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1983559</guid><dc:creator>davcox</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=1983559</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=1983559</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2007/10/31/adding-simple-custom-schema-to-iis-configuration.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;Let's see if I can get 2 blog posts written in the same month!&amp;nbsp; :)&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;As I was talking last post, our team had an app-building week (everyone will see the results over the next couple months; there were some VERY cool tools that I'm excited for people to see).&amp;nbsp; I wanted to document part of my journey on getting a custom schema added.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;One thing that I noted is that it's important to make sure your schema file is well-formed XML, or all sorts of tools will choke in various ways.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;I looked at the existing iis_schema.xml for examples of various elements that I could use.&amp;nbsp;&amp;nbsp; Also, this&amp;nbsp;IIS.net article is extremely helpful in getting started:&amp;nbsp; &lt;A href="http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/Extending-IIS7-Configuration/Extending-IIS7-Schema-and-Accessing-the-custom-sec" mce_href="http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/Extending-IIS7-Configuration/Extending-IIS7-Schema-and-Accessing-the-custom-sec"&gt;http://www.iis.net/articles/view.aspx/IIS7/Extending-IIS7/Extending-IIS7-Configuration/Extending-IIS7-Schema-and-Accessing-the-custom-sec&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;I ended up creating this schema:&lt;/P&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 11.0pt"&gt;&lt;FONT face=Arial size=2&gt;&amp;lt;configSchema&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;sectionSchema name="ENC-Pony"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;attribute name="CanIHaveAPonyPlease" type="bool" defaultValue="false" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;attribute name="YesResponse" type="string"&amp;nbsp; defaultValue="Yes, you can have a pony" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;attribute name="NoResponse" type="string"&amp;nbsp; defaultValue="No, you cannot have a pony" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;element name="ponies"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;collection addElement="add" &amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;attribute name="PonyLocationType" type="enum" defaultValue="AsciiFile"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;enum name="AsciiFile" value="0" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;enum name="ImageFile" value="1" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;enum name="HttpLink" value="2" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/attribute&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;attribute name="value" type="string" validationType="nonEmptyString" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/collection&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/element&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/sectionSchema&amp;gt;&lt;BR&gt;&amp;lt;/configSchema&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P mce_keep="true"&gt;
&lt;P mce_keep="true"&gt;I wanted to automate adding my custom Section to the IIS config system, so I saw that MVolo has a tool to do just that; it works great.&amp;nbsp; It's really just adding one line to applicationhost.config, but it's easier said than automated.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;The line that needs to be added to the &amp;lt;configSections&amp;gt; element&amp;nbsp;is:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;section name="ENC-Pony" overrideModeDefault="Allow" allowDefinition="Everywhere" /&amp;gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Here is the iisschema.exe tool which will let you add this line item automatically.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://mvolo.com/blogs/serverside/archive/2007/08/04/IISSCHEMA.EXE-_2D00_-A-tool-to-register-IIS7-configuration-sections.aspx" mce_href="http://mvolo.com/blogs/serverside/archive/2007/08/04/IISSCHEMA.EXE-_2D00_-A-tool-to-register-IIS7-configuration-sections.aspx"&gt;http://mvolo.com/blogs/serverside/archive/2007/08/04/IISSCHEMA.EXE-_2D00_-A-tool-to-register-IIS7-configuration-sections.aspx&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;A href="http://www.harbar.net/archive/2007/08/08/IISSCHEMA.EXE--A-tool-to-register-IIS7-configuration-sections.aspx" mce_href="http://www.harbar.net/archive/2007/08/08/IISSCHEMA.EXE--A-tool-to-register-IIS7-configuration-sections.aspx"&gt;http://www.harbar.net/archive/2007/08/08/IISSCHEMA.EXE--A-tool-to-register-IIS7-configuration-sections.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;At this point, I could read and write configuration through tools like appcmd and the rest of the configuration stack (including the UI Configuration Editor module).&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;The next post will be how to develop a managed module that runs in the IIS pipeline.&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1983559" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/davcox/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/davcox/archive/tags/Schema/default.aspx">Schema</category><category domain="http://blogs.iis.net/davcox/archive/tags/Config/default.aspx">Config</category></item><item><title>Recovering FREB.XSL after deleting it</title><link>http://blogs.iis.net/davcox/archive/2007/10/05/recovering-freb-xsl-after-deleting-it.aspx</link><pubDate>Fri, 05 Oct 2007 20:23:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1943621</guid><dc:creator>davcox</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=1943621</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=1943621</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2007/10/05/recovering-freb-xsl-after-deleting-it.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;For the next week, I hope to produce a couple of blogs about my journey through the land of developing a managed module for IIS7.&amp;nbsp;&amp;nbsp;Being a test lead on the team, I rarely have time to get my hands dirty with the product at the level of developing modules against API's; it's a lot of fun and I wish I had more time for it.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;The first thing I wanted to mention was that I had a hard time getting my module to emit tracing information properly to FREB aka Failed Request Tracing.&amp;nbsp; Although I had numerous problems (which I will go into some detail about next week); the frustrating one was when I deleted my FREB style sheet freb.xsl ... I tried a lot ot get it back, restarting services, etc. but I had to walk down the hall and talk my good tester Bobby (who tests FREB) to see how to get it back!&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;He said that I needed to delete the directory that was containing the freb log files.&amp;nbsp; Once I deleted the entire folder (not just the files in the folder), then to my great joy, I saw the FREB.XSL file back in the folder after my next request to the server.&amp;nbsp; The FREB module will re-create the XSL file only when it is creating the folder to begin with; due to performance reasons, it does not check if the XSL&amp;nbsp;exists after the folder is created.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;I bet a lot of people will see that; and hopefully we can get an article written about troubleshooting FREB, but until then, this blog entry (and perhaps others) will have to suffice.&amp;nbsp; There has been talk of posting updated XSL's up on iis.net which is a great idea!&amp;nbsp; I hope some of you take the XSL file, improve it and post it here as well!&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1943621" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/davcox/archive/tags/FREB/default.aspx">FREB</category><category domain="http://blogs.iis.net/davcox/archive/tags/XSL/default.aspx">XSL</category><category domain="http://blogs.iis.net/davcox/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category></item><item><title>Task pane, task pane, task pane</title><link>http://blogs.iis.net/davcox/archive/2007/02/13/task-pane-task-pane-task-pane.aspx</link><pubDate>Tue, 13 Feb 2007 20:45:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1577145</guid><dc:creator>davcox</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=1577145</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=1577145</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2007/02/13/task-pane-task-pane-task-pane.aspx#comments</comments><description>&lt;P&gt;In the IIS7 UI, which is the first IIS UI that anyone can actually say "looks beautiful" ... has had a bit of a learning curve for me.&amp;nbsp; I keep forgetting about the "Task Pane", sometimes called the "Action Pane" which is on the right side of the window.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;There are a LOT of very useful little tasks that you might be looking for in the "main" middle pane but you can't find.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;As an example, I was just examining the IP and Domain Restrictions dialog and couldn't find the domain restrictions part, well it was hidden until you enable the Reverse DNS Lookup (which is bad for performance) ... but the item to turn this on is in the Task Pane in the Edit Feature Settings action.&amp;nbsp; A couple UI modules have tasks/actions like this.&amp;nbsp; IP and Domain Restrictions is one of them, Output Caching is another, and Error Pages is another.&amp;nbsp; These are just a handful of hte modules where you need to be alert and look at the Task Pane to really find the setting that you're looking for. &lt;/P&gt;
&lt;P&gt;One of the things I really love about the new UI is that it shows so many more settings than were exposed before.&amp;nbsp; Even settings for old features like ASP are now brought out into the UI.&amp;nbsp; When I go back and look at the IIS6 UI, it really didn't have as much surface area of the IIS feature set exposed for easy administration.&amp;nbsp; I'm glad we've been able to add so much richness and depth to IIS7.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Also, we finally have a forum specifically for the Administration UI.&amp;nbsp; If you feel silly because can't find where to set "that setting", this is a great place to ask.&amp;nbsp; If you want to know how to add your own UI (to do whatever you might want to do to ease administration ... such as perf counters, customized metrics and configuration, etc) this is a great place to ask.&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;Here is the direct link:&amp;nbsp; &lt;A href="http://forums.iis.net/1111/ShowForum.aspx" mce_href="http://forums.iis.net/1111/ShowForum.aspx"&gt;http://forums.iis.net/1111/ShowForum.aspx&lt;/A&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1577145" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/davcox/archive/tags/UI/default.aspx">UI</category><category domain="http://blogs.iis.net/davcox/archive/tags/Task+Pane/default.aspx">Task Pane</category></item><item><title>WebDAV coming (short)</title><link>http://blogs.iis.net/davcox/archive/2006/12/13/webdav-coming-short.aspx</link><pubDate>Wed, 13 Dec 2006 17:49:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1495983</guid><dc:creator>davcox</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=1495983</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=1495983</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2006/12/13/webdav-coming-short.aspx#comments</comments><description>&lt;P&gt;Some people were asking me about webdav in IIS&amp;nbsp;for&amp;nbsp;Vista ... and you're right it's not there.&amp;nbsp; But check out Keith Moore's blog on the future of webdav with IIS (I was impressed).&amp;nbsp; Keith's background is somewhat legendary on the team and so I have high expectations for what they will produce for a new and improved webdav module for IIS7.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I don't know how many people have been using webfolders (and a lot of other products and services) and not known that under the covers they were using DAV.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;One example is that with Windows XP and Windows Vista, you can do "net use *&amp;nbsp;http://intranet-site/mywebdav/" which will effectively map a drive to a particular webdav enabled virtual directory.&amp;nbsp; It's a pretty cool feature ... and in fact we use webdav to move around files in our own test infrastructure.&lt;/P&gt;
&lt;P&gt;Some of the history of WebDAV is that it was written by a team in Exchange, which used the same code for DAV-EX (WebDAV against an exchange store), DAV-FS (WebDAV against the file system which is what IIS used) and DAV-SQL (WebDAV against a SQL store).&amp;nbsp; This team no longer exists and cannot support WebDAV that we have shipped with IIS; so Keith, Robert and Marchel have taken on this charter to do a simplified and more performant version of WebDAV that fits into the IIS7 "Module" programming model.&amp;nbsp; The cool thing about this is that we already have a large automation suite that we can use to test WebDAV, so I expect we'll have a high-quality release.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;I hope to get more into bloggin here soon ... perhaps the new year will bring more time ... :)&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1495983" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/davcox/archive/tags/DAV/default.aspx">DAV</category></item><item><title>UNC on IIS7 - time for a refresher course!</title><link>http://blogs.iis.net/davcox/archive/2006/09/05/UNC-on-IIS7-_2D00_-time-for-a-refresher-course_2100_.aspx</link><pubDate>Tue, 05 Sep 2006 16:55:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1390085</guid><dc:creator>davcox</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=1390085</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=1390085</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2006/09/05/UNC-on-IIS7-_2D00_-time-for-a-refresher-course_2100_.aspx#comments</comments><description>&lt;P&gt;Recently we started an effort to again look at the centralized content and configuration story and see where we can improve for IIS7.&amp;nbsp; It was a bit amazing to me that some people had not yet read the whitepaper from Brett Hill and myself on remote content and configuration!&amp;nbsp; :)&amp;nbsp; And sadly didn't understand the value of the "GetLastModified" based caching algorithm for hosters.&amp;nbsp; Anyway, they will be reading the paper and I'll be giving a quiz afterwards to check.&amp;nbsp; :) &lt;/P&gt;
&lt;P&gt;Typically when scaling out a web server for lots of sites, performance isn't the critical piece (sometimes caching is off completely), but TCO per site and per box is.&amp;nbsp; This is where using the alternative caching method of the GetLastModified date in our static file and asp page caching systems comes into play.&amp;nbsp; As the whitepaper goes into detail about, this algorithm may use more internal network bandwidth, but it doesn't use up NonPaged Pool (memory)&amp;nbsp;on the webserver or file server to maintain the change notifications.&amp;nbsp; This allows the machines to have a broader set of content and still maintian some performance characteristics.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The unfortunate part of this, is that only static files and asp content are covered by this caching algorithm, for FPSE and asp.net and 3rd party handlers; we don't have an easy way to expose this caching system.&amp;nbsp; Perhaps in a future version of IIS this will occur.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;If you haven't read the whitepaper and want to see your web server scale better where you have your content centralized, please read this whitepaper ... we'd love to get your feedback.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Here is the link:&amp;nbsp; &lt;A href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/webapp/iis/remstorg.mspx" mce_href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/webapp/iis/remstorg.mspx"&gt;&lt;FONT color=#669966&gt;&lt;FONT color=#0000ff&gt;http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/webapp/iis/remstorg.mspx&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1390085" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/davcox/archive/tags/shared+content/default.aspx">shared content</category><category domain="http://blogs.iis.net/davcox/archive/tags/UNC/default.aspx">UNC</category></item><item><title>3 Years and 3 months</title><link>http://blogs.iis.net/davcox/archive/2006/07/21/3-years-and-3-months.aspx</link><pubDate>Fri, 21 Jul 2006 18:44:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1348277</guid><dc:creator>davcox</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=1348277</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=1348277</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2006/07/21/3-years-and-3-months.aspx#comments</comments><description>&lt;P&gt;&lt;FONT face=Arial color=#000000 size=2&gt;Windows Server&amp;nbsp;2003 and IIS6 released in March of 2003.&amp;nbsp; Last week, we released a patch for asp.dll to fix our first vulnerability in over 3 years!&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#000000 size=2&gt;It was kind of a sad day for the team (but one that we knew would come), because after IIS5, we&amp;nbsp;committed as a team&amp;nbsp;to never let IIS be an primary attack vector for the Windows platform.&amp;nbsp; And so far we've been able to keep that commitment.&amp;nbsp; Hopefully it'll be another 3 years before we release another one!&amp;nbsp; :)&amp;nbsp; So it was also a happy day in that 3 years is a really long time (these days) for your product to be really&amp;nbsp;"unbreakable".&amp;nbsp; :)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#000000 size=2&gt;I had the duty of testing the patch before it was released to make sure the vulnerability was indeed fixed.&amp;nbsp; Ulad did a great job of doing a very thorough analysis of the code and a thorough fix to the issue.&amp;nbsp; Given that we hadn't shipped a release like this in 3 years we did have a couple hicups, you might have seen or experienced this issue:&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;A title=http://news.com.com/Microsoft+irons+out+security+patch/2100-1002_3-6096179.html?tag=newsmap href="http://news.com.com/Microsoft+irons+out+security+patch/2100-1002_3-6096179.html?tag=newsmap" mce_href="http://news.com.com/Microsoft+irons+out+security+patch/2100-1002_3-6096179.html?tag=newsmap"&gt;&lt;FONT color=#0000ff&gt;http://news.com.com/Microsoft+irons+out+security+patch/2100-1002_3-6096179.html?tag=newsmap&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;FONT color=#000000&gt;That issue was mostly due to the "detectoid" logic that WU uses to say if the patch is needed or not; the patch itself was fine (so no work was required on the IIS side) although I spent a long night here last week to help them pinpoint the issue.&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;FONT color=#000000&gt;Also, we were unable to get the right logic to restart w3svc prior to updating the asp.dll binary, but there is an easy workaround for that.&amp;nbsp; Next time, (if there is a next time) we'll be sure to get that logic correct.&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;FONT face=Arial color=#000000 size=2&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Arial color=#000000 size=2&gt;As the MSRC bulletin says, this vulnerability requires the attacker to place asp content on the machine (so for example hosting scenarios).&amp;nbsp; Once the maliciously formed page is requested, the attacker would be able to run arbitrary code.&amp;nbsp; So it's certainly an important patch to install.&amp;nbsp; There is extremely little risk in installling this patch given the nature of the code change and the testing that we did on this patch.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial color=#000000 size=2&gt;Anyway, I'm glad to be back blogging, I had some permissions and user account problems blocking me.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1348277" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/davcox/archive/tags/IIS6/default.aspx">IIS6</category><category domain="http://blogs.iis.net/davcox/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.iis.net/davcox/archive/tags/ASP/default.aspx">ASP</category></item><item><title>Perf counter behavior changes in IIS6</title><link>http://blogs.iis.net/davcox/archive/2006/03/17/perf-counter-behavior-changes-in-iis6.aspx</link><pubDate>Fri, 17 Mar 2006 21:41:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1288444</guid><dc:creator>alowe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=1288444</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=1288444</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2006/03/17/perf-counter-behavior-changes-in-iis6.aspx#comments</comments><description>&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;I thought I'd really just share some information I collected while testing perf counters during the IIS6 days.&amp;nbsp; The big changes were primarily to address the architecture and new process model that HTTP.sys and IIS provided and also to help our scalability situation.&amp;nbsp; Much of the counter behavior was already&amp;nbsp;documented in the resource kit, but I thought I'd add my own flavor to this, since I helped the UE people write the docs and I think they did a great job given the difficult challenge it is to write about something as you learn it.&amp;nbsp; So this blog basically covers two items; it covers counters that have new behavior and then some registry keys you can set if you really need to scale out your server for tens of thousands of sites (rare).&amp;nbsp; &lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial; TEXT-DECORATION: underline"&gt;Counters that have updated behavior&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;Bytes Per Second and Total Bytes counters&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;In IIS5, these counters gave you the Bytes per Second:&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "BYTES_SENT_COUNTER",&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "BYTES_RECEIVED_COUNTER",&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "BYTES_TOTAL_COUNTER"&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;In IIS6, they give you Bytes Total (Total sent, total received, total sent+received)&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;These counters are new in IIS6 and will return the Bytes per Second values:&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "BYTES_SENT_PER_SEC",&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "BYTES_RECEIVED_PER_SEC",&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "BYTES_TOTAL_PER_SEC"&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;This brings the PDH counters in line with SNMP counters that had already existed.&amp;nbsp; &lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;IIS 6.0 counts Current Non/AnonymousUsers as Current Requests; IIS5 equates users with connections.&amp;nbsp; &lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;This means that you’re going to notice much smaller CurrentAnonymousUsers count in IIS6 (and consequently a lower MaxAnonymousUser). The same is true for NonAnonymousUser counters.&amp;nbsp; But actually it is just more accurate.&amp;nbsp; CurrentUsers are now the # of current in-flight requests (the # of requests currently being worked on by the server).&amp;nbsp; CurrentConnections is a better counter to monitor for scalabilty and availability metrics (its behavior is unchanged).&amp;nbsp; This number will of course be much higher than the number of users for sites that support keep-alive connections.&amp;nbsp; &lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;It’s important to remember that in IIS6 each request (not connection) is logically a user.&amp;nbsp; &lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;In IIS 6.0 the Kernel Mode Cache causes some new behavior in counters.&amp;nbsp; &lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;You may notice that these counters no longer increment when files are only being served out of the Kernel-Mode cache.&amp;nbsp; &lt;/P&gt;
&lt;P style="FONT-SIZE: 9pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Total Files Sent&lt;/P&gt;
&lt;P style="FONT-SIZE: 9pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Total Files Transfered&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;Instead, Web Service Cache\Kernel: URI Cache Hits will be incremented. &amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 9pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;Total Anonymous Users and related Anonymous User counters will be updated during cache hits.&amp;nbsp; Be aware that the Kernel mode cache does not cache requests that are authenticated so the NonAnonymousUser related counters are exactly the same as before.&amp;nbsp; &lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial; TEXT-DECORATION: underline"&gt;New general counter behavior&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;Several new registry keys exist to help IIS scale to many more sites: &lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;The registry keys all exist under this node:&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Arial"&gt;HKLM\SYSTEM\CurrentControlSet\Services\w3svc\Performance\&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;Here are some typical settings that we used in our testing (no warranties expressed or implied):&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;"FreshTimeForCounters",1,"REG_DWORD"&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;"CheckCountersEveryNMiliseconds",250,"REG_DWORD"&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;"NumberOfTimesToCheckCounters",8,"REG_DWORD"&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Arial"&gt;These registry keys&amp;nbsp;allows IIS to “check” on the counters less often.&amp;nbsp; As you add more sites to IIS, each site will be “asked” for counters which can be quite time consuming.&amp;nbsp; The idea here is that you want to increase the Miliseconds and FreshTime&amp;nbsp;to a higher number when you have higher sites.&amp;nbsp; You'll know you might want to do this if you have a lot of extremely idle sites (on the order of more than 10 thousand), but the w3wp's are using up a lot of processor time.&amp;nbsp; Be careful here, most people won't need to mess with these registry keys.&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1288444" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/davcox/archive/tags/Perf+Counters/default.aspx">Perf Counters</category><category domain="http://blogs.iis.net/davcox/archive/tags/IIS6/default.aspx">IIS6</category></item><item><title>My first blog</title><link>http://blogs.iis.net/davcox/archive/2006/03/17/1288442.aspx</link><pubDate>Fri, 17 Mar 2006 17:09:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1288442</guid><dc:creator>alowe</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/rsscomments.aspx?PostID=1288442</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/davcox/commentapi.aspx?PostID=1288442</wfw:comment><comments>http://blogs.iis.net/davcox/archive/2006/03/17/1288442.aspx#comments</comments><description>&lt;P&gt;Yeah, what a cheesy title, but hey it's just my first blog entry.&amp;nbsp; My goal is to get a blog entry out at least once a week, if not more.&amp;nbsp; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;So why blog?&amp;nbsp; Well it's a great way to have a little fun and talk with other people about the things I'm interested in.&amp;nbsp; It's also a good way to get more data from customers about IIS and help teach people about some cool things IIS is capable of doing, but that we didn't get time to document or explain fully.&amp;nbsp; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Topics I plan to go over in the course of my blogs:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;Various feature areas I've tested in IIS, such as WebDAV, HTTP Compliance, Perf Counters, Static File Handler, UNC scenarios&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Testing in Windows - automation strategy; assessing quality of complex products&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Why Microsoft? - why I like working here and plan to stay working here&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Other stuff - I might get into politics, religion ... all the things you're not suppossed to talk about during dinner.&amp;nbsp; :) &lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Lastly, as&amp;nbsp;a homeowner I spend a lot of time on my lawn and house ... and since I'm too cheap to hire out work I like to do the stuff myself or work on it with a friend&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;BR&gt;I'll blog again soon, but here's the first installment.&amp;nbsp; Next time around, I'll start digging into some of the nitty gritty details of perf counters and how they've changed between IIS5 and IIS6.&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1288442" width="1" height="1"&gt;</description></item></channel></rss>