November 2010 (1)
August 2010 (1)
July 2010 (1)
June 2010 (3)
July 2009 (3)
June 2009 (1)
May 2009 (1)
February 2009 (1)
January 2009 (1)
November 2008 (3)
October 2008 (4)
September 2008 (9)
August 2008 (6)
July 2008 (3)
June 2008 (3)
January 2008 (1)
November 2007 (2)
October 2007 (6)
September 2007 (5)
August 2007 (22)
July 2007 (6)
June 2007 (1)
May 2007 (3)
April 2007 (27)
March 2007 (8)
February 2007 (6)
September 2006 (2)
August 2006 (4)
July 2006 (9)
June 2006 (17)
May 2006 (20)
April 2006 (12)
March 2006 (9)
February 2006 (4)
January 2006 (3)
December 2005 (2)
November 2005 (4)
October 2005 (5)
September 2005 (37)
August 2005 (83)
July 2005 (6)

Active Directory / LDAP (0)
ASP.Net (19)
Blackberry Development (4)
c# (34)
c++ (3)
Code Camp (1)
Excel (1)
Exchange (3)
Front Page 2003 (6)
FTP User Editor (4)
IIS (146)
IIS - Log Parser (7)
IIS / FTP (12)
IIS / Tools / Administration (42)
IIS / Tools / Authentication (6)
IIS / Tools / Compression (8)
IIS / Tools / Crash & Hang (12)
IIS / Tools / ISAPI Filters (17)
IIS / Tools / Log Files (17)
IIS / Tools / Scripts (28)
IIS / Tools / Security (9)
IIS / Tools / SSL (6)
IIS 7 (3)
Internet Information Server (1)
Me (Chris Crowe) (6)
MIME Types (1)
Misc (72)
Oulook Express (2)
Silverlight (1)
SQL Server (27)
SQL Server CTE (1)
Vista (15)
Vista Gadgets (8)
Visual Studio (11)
Voice over BroadBand (1)
Windows (33)
Windows Powershell (3)
Windows Sharepoint Services (0)
Windows Sharepoint Services (15)
Windows Vista (14)
Wine Cellar (1)
WMI (8)
IIS / Tools / Crash & Hang (12)

IIS / Tools / Crash & Hang

FAILED REQ TRACING: Provider Not Showing
I came accross this posting on this morning and thought I should post it here as it could be relevant to someone in the near future.


When using Failed Request Tracing, you are unable to configure or use the ASP.Net trace provider (it does not show up in the list of providers to select when creating a new trace rule) even after ensuring that & .Net extensibility are installed. 

This is a known setup timing issue that causes the provider definition to get accidentally deleted.  It has been fixed in current Longhorn Server & Vista SP1 builds.

Workaround is to do the following:
  1. Open %windir%\system32\inetsrv\config\applicationHost.config in your favourite xml editor (such as NOTEPAD).
  2. Add the following to <traceProviderDefinitions>


           …other providers defined…


                    <add name="ASPNET" guid="{AFF081FE-0247-4275-9C4E-021F3DC1DA35}">


                            <add name="Infrastructure" value="1" />

                            <add name="Module" value="2" />

                            <add name="Page" value="4" />

                            <add name="AppServices" value="8" />




Hope this helps you out in the mean time. 


    Program Manager - IIS
    Release/Proj Mgmt & Support/Health/Instr/Tracing/Logging

    Microsoft releases a new download center for IIS (everything in one place)

    DownloadCENTER for has been released! 

    The DownloadCENTER at, is a community hotspot for discovering, sharing, reviewing and promoting IIS-related solutions in a single place.  Dozens of existing downloads, for all versions of IIS – both from Microsoft and the community – are already available in DownloadCENTER today. 

    This new feature of is particularly relevant with the release of IIS7 in Windows Vista.  The latest release of Microsoft’s Web server has a completely modular architecture which features over forty pluggable components that can be easily added, removed or even replaced with custom implementations. 

    This powerful extensibility support is available to both .NET and C/C++ developers.  In the future, DownloadCENTER is expected to house a large number of IIS7 extensions submitted by not only the IIS team but the developers and partner ISVs of the IIS community as well.

    To learn more about the DownloadCenter, read IIS Product Unit Manager, Bill Staples’ blog post about it or check it out yourself today!


    VBScript - Check if multiple version of the .NET framework are assigned to an application pool

    This code will allow you to check if there are IIS applications which are configured to use multiple version of the .NET framework.

    The code enumerates all the Application Pools and then find all of the applications in that pool. It then checks for the version of the .NET framework which handles the .ASPX file extension.

    It saves the unique versions of the .NET Framework found and if it finds multiple versions installed will list all of the applications using that Application Poll and display the path and the version being used. This will allow you to find a potential problem which could be hard to track down normally.

    Calling Usage 

    cscript CheckForMultipleVersionsOfDotNetFramework.vbs

    Example Output

    AppPool #1
    No applications using this pool!


     Warning multiple version of the .NET framework detected!

     Found references to v1.1.4322
     Found references to v2.0.50727

     //localhost/W3SVC/1/ROO                                           - v1.1.4322
     //localhost/W3SVC/1198258389/ROO                         - v1.1.4322
     //localhost/W3SVC/1280263431/ROO                         - v1.1.4322
     //localhost/W3SVC/1388032739/ROO                         - v1.1.4322
     //localhost/W3SVC/1849151055/ROO                         - v1.1.4322
     //localhost/W3SVC/1957176745/ROO                         - v1.1.4322
     //localhost/W3SVC/4/ROO                                           - v1.1.4322
     //localhost/W3SVC/415889539/ROO                           - v1.1.4322
     //localhost/W3SVC/1/ROOT/Monito                            - v2.0.50727
     //localhost/W3SVC/1/ROOT/Monitorin                        - v1.1.4322
     //localhost/W3SVC/1/ROOT/NetTracke                       - v1.1.4322

    Found references to v1.1.4322

    Found references to v1.1.4322

    Found references to v1.1.4322

    No applications using this pool!

    Source Code

    You can download the source code here.

    option explicit
    dim AppsInPool, objAppPool, index, IISObj, IISPath, Version, pos
    Dim Versions(), objAppPools
    function FindASPXScriptMapVersion(ScriptMaps)
     Dim pos, ScriptMap
     for pos = lbound(ScriptMaps) to UBOund(ScriptMaps)
       ScriptMap = lcase(ScriptMaps(POS))
       if (left(ScriptMap, 5) = ".aspx") then
        FindASPXScriptMapVersion = mid(ScriptMap, 42)
        FindASPXScriptMapVersion = left(FindASPXScriptMapVersion, _
         instr(FindASPXScriptMapVersion, "\")-1)
        exit function
       end if
     FindASPXScriptMapVersion = ""
    end function
    function AddVersion(Version, Path)
     dim Found, pos
     Found = false
     for pos = lbound(Versions) to UBound(Versions)-1
      if (Versions(pos) = Version) then
       Found = true
      end if
     if (Found = false) then
      redim preserve Versions(ubound(Versions)+1)
      Versions(ubound(Versions)-1)= Version
     end if
    end function
    Set objAppPools = GetObject("IIS://localhost/W3SVC/AppPools")
    for each objAppPool in objAppPools
     Redim Versions(0)
     Set objAppPool = GetObject("IIS://localhost/W3SVC/AppPools/" & objAppPool.Name )
     WScript.echo objAppPool.Name 
     AppsInPool= objAppPool.EnumAppsInPool()
     if (ubound(AppsInPool) = -1) then
      WScript.echo vbtab  & "No applications using this pool!"
      for index = lbound(AppsInPool) to UBound(AppsInPool)
       IISPath = AppsInPool(index)
       IISPath = "IIS://localhost/" & mid(IISPath,5, len(IISPath)-5)
       set IISObj = GetObject(IISPath)
       Version = FindASPXScriptMapVersion(IISObj.ScriptMaps)
       call AddVersion(Version, mid(IISPath,5, len(IISPath)-5))
      if (ubound(Versions)> 1) then
       WScript.Echo vbcrlf & vbtab & _
        "Warning multiple version of the .NET framework detected!" & vbcrlf
       for pos = lbound(Versions) to ubound(Versions)-1
        WScript.echo vbtab & "Found references to " &  Versions(pos) 
       WScript.echo ""
       for index = lbound(AppsInPool) to UBound(AppsInPool)
        IISPath = AppsInPool(index)
        IISPath = "IIS://localhost/" & mid(IISPath,5, len(IISPath)-5)
        set IISObj = GetObject(IISPath)
        Version = FindASPXScriptMapVersion(IISObj.ScriptMaps)
        WScript.echo vbtab & mid(IISPath,5, len(IISPath)-5) & _
         space(70 - len(IISpath)) & " - " & Version
       for pos = lbound(Versions) to ubound(Versions)-1
        WScript.echo vbtab & "Found references to " &  Versions(pos) 
      end if
     end if
     WScript.echo ""

    Christchurch .NET Users Group Meeting - June 21st, 2006

    I had the pleasure to present to the Christchurch .NET Users Group ( ) last evening. It was a very cold night with hail, sleet, rain and we had around 25 people attend.

    I spoke about three topics in my presentation:

    IIS Scripting

    In the talk on IIS Scripting I discussed the different providers that were available to manage IIS from a command line script or application. These include ADSI and WMI, Admin Base Objects and the new IIS 7 Managed Provider.


    IIS Diagnostic Tools

    In the discussion about IIS diagnostic tools I presented details on the following tools from the Debug Diagnostic Toolkit for IIS.

    Authentication and Access Control Diagnostics

    Authentication and Access Control Diagnostics (Authdiag) Version 1.0 allows you to review, test, and correct problems with Internet Information Services (IIS) authentication and authorization. You can use Authdiag to check settings on Web sites, FTP sites, virtual directories, Web directories, and files. Authdiag can help you troubleshoot the following types of issues:

    SSL Diagnostics

    It provides a centralized location to display all relevant SSL configuration information. Most of this information is stored in the metabase, which is the main IIS configuration file. Information related to certificates is also stored in the Windows registry.

    SSL Diagnostics checks for the correct configuration of SSL objects and settings. These include client and server certificates, ports, private keys, and Web site states.

    Administrators can test whether their current server certificate is working properly by temporarily replacing the current certificate with a self-signed certificate. Administrators are able to test their certificates with a single click of the mouse.

    Administrators can use SSL Diagnostics to quickly simulate the connection, or handshake, between the server and browser, and review the response from the server. This is very helpful for determining where in the SSL handshake process the connection is breaking down.

    Debug Diagnostics

    Debug Diagnostics (DebugDiag) 1.0 is a comprehensive tool designed to help IIS administrators or developers determine why a IIS worker process is crashing, hanging, or memory leak. It offers a simple User Interface to build rules for capturing these common problems with web applications and also offers a built-in analysis system



    In the IIS 7 section of the presentation I discussed some of the benefits of the new server and its new modular architecture, new UI, new extensibility, and diagnostics functionality.

    I showed a number of demos of IIS 7 including a custom Basic Authentication module, a custom Directory Browsing Module, Tracing Features, Debugging a crashing application pool with Debug Diag and some features of the new User Interface.


    My presentation was made on the Beta 2 build of Vista Ultimate and most of the tools worked fine on Vista and IIS 7 even though they are not designed to. As far as I know no body left early - a good sign.... IIS can be a dry topic to developers but I hope they learned something useful about the new product and of course scripting and diagnostics that they may not have known previously.

    IIS 6 - Downloads being terminated by HTTP.SYS

    At work we came across a situation on a Windows 2003 Server IIS 6 machine where people downloading one specific file were finding that it was being terminated during the transfer. Those people who had file download managers or web browsers with resume did not notice the problem but Internet Explorer would just terminate the download.

    • This Windows 2003 Server machine did not have Service Pack 1 installed
    • The particular download was approx 20MB.

    This machine was located in the United States and users in the United States did not notice and could not reproduce the problem.

    In the httperr.log file in c:\windows\system32\logfiles\HTTPERR we would find entries like the following

    date time c-ip s-ip c-port cs-version cs-method cs-uri sc-status s-siteid s-reason
    2006-02-22 5:52:53     80 HTTP/1.1 GET - DataTransfer120/DataTransfer120.exe - 19499532 Timer_MinBytesPerSecond

    The reason given for the termination of the download was Timer_MinBytesPerSecond which Microsoft states as the following

    • The connection expired because the client was not receiving a response at a reasonable speed.
    • The response send rate was slower than the default of 240 bytes/sec.

    The strange thing was we were getting around 30KB/S and then the download would terminate so we were getting a faster response than 240 bytes per second.

    The fix

    The fix to the problem was to install Service Pack 1 for Windows 2003 Server. I received a response from a Microsoft employee that stated "There are many bugs in http.sys timeout logic fixed in SP1 - one bug regarding send-size being more than 15270*MinBytesPerSecond - this was not released as a qfe, your only option is to upgrade to SP1."

    Installing Service Pack 1 has indeed cured this problem....

    Additional References

    Microsoft IIS tools have been updated...

    Microsoft has released the January 2006 IIS toolkit.

    • Fetch 1.4:  Remove the browser from scenario and make raw custom HTTP/S requests to your IIS Web Server
    • Debug Diagnostics 1.0:  Track down problems with IIS Crashes, Hangs, or Memory Leaks using this tool
    • Trace Diag:  This is a combined toolset aimed at helping users of Windows Server 2003 Service Pack 1’s tracing easier.  It includes IISREQMON, IISTRACE for the command-line and IIS Request Viewer (User Interface) and installs only on SP 1 and higher versions of Windows. 

    This release also included some updates to SSLDiag to version 1.1.  This included support for the following:

    • Service Pack 1’s Host Header support for SSL
    • SelfSSL complete functionality on the command-line (ssldiag /selfssl)
    • Limit diagnostics with User Interface to single site (for use on large or specific diagnostic situations – ssldiag /s:<siteid>)

     **Important:  Log Parser 2.2, SMTPDiag 1.0, and AuthDiag 1.0 were unchanged in this release.


    For details about each platform, please use the following URL:


      (x86) Landing:

      (x64) Landing:

      (ia64) Landing:


    IIS Guard - [Beta] Easily see all requests that are made to your IIS web server and find the sites and scripts that are causing problems

    The IIS web server can easily stop working due to corrupted or poorly written web scripts. There’s no monitoring tool included in the IIS web server itself, which makes it hard, if not impossible, to find and solve problematic sites or scripts.

    With IISGuard, this is a problem of the past. Now you can easily see all requests that are made to your IIS web server and find the sites and scripts that are causing problems.

    These are some of the problems that IISGuard can help you find in the IIS:

    • High CPU load or memory consumption.
    • Denial of Service attacks.
    • Attacks by worms and viruses.

    There’s no need to fumble in the dark any more, IISGuard lets you find what you’re looking for in no time.


    • Live Monitor. Watch requests to your IIS web server in real-time. It’s possible to both view currently active request and finished request. Requests that last a long time are marked.
    • Logging. IISGuard logs all requests and features an extensive built-in search function.
    • Configurability. IISGuard can be configured with various options. You can choose to monitor all file types or set up a filter that monitors only certain file types (e.g. asp, php, exe, dll).
    • Web interface. All features of IISGuard are accessible through a web interface.
    • Own web server. IISGuard contains a web server of its own, which makes it work independently of the IIS server. This means that when you need IISGuard the most, when the IIS server is experiencing problems, you’ll still be able to access it.
    • Performance. IISGuard has proven to perform extremely well in a real server hosting environment, with thousands of heavily loaded sites.
    • Ease of use. IISGuard is set-up within minutes. The web interface is both simple and intuitive.

    Note: This product is currently in Beta

    For more details see -

    IIS Diagnostics Kits

    The IIS Diagnostics Toolkit is a combined release of popular tools used by today's IIS users. These tools include tools aimed at resolving problems related to Secure Socket Layer (SSL) issues, permission or security problems, gathering data for your SMTP server included with IIS, as well as the famous Log Parser utility used to sift through hundreds or thousands of log files very quickly.

    The toolkit consolidates all the tools into a convienant download and is supplemented by updates every 90-days to ensure that users have the most current diagnostics tools at their fingertips.

    For more details see:

    Authentication and Access Control Diagnostics 1.0 (more commonly known as AuthDiag) is a tool released by Microsoft aimed at aiding IT professionals and developers at more effectively finding the source of authentication and authorization failures.

    These users have often seen behavior from Internet Information Services (IIS) that doesn't seem appropriate or random when users authenticate to the IIS server. The complex world of authentication types and the various levels of security permissions necessary to allow a user to access the server causes many hours of labor for those tasked with troubleshooting these problems.

    AuthDiag 1.0 offers a robust tool that offers a efficient method for troubleshooting authentication on IIS 5.x and 6.0. It will analyze metabase configuration and system-wide policies and warn users of possible points of failure and guide them to resolving the problem. AuthDiag 1.0 also includes a robust monitoring tool called AuthMon designed at capturing a snapshot of the problem while it occurs in real-time. AuthMon is robust and specially designed for IIS servers removing any information not pertinent to the authentication or authorization process.

    For more details see:

    A common problem for administrators of IIS servers is configuring and troubleshooting SSL enabled websites. To assist in administrators efforts, Microsoft has designed a tool - SSL Diagnostics - to aid in quickly identifying configuration problems in the IIS metabase, certificates, or certificate stores.

    This tool allows users to review configuration information in a easy to read view mode or to run the tool silently with only the creation of a log file. During use, administrators can simulate the SSL handshake to find errors. They can also quickly "hot swap" certificates for testing purposes.

    These packages come in two forms: Express and Full. The express will only give the pertinent tools for administrators to use SSL Diagnostics while full install installs the same files with the appropriate documentation. Included in the full install is a SSL Frequently Asked Questions that can assist in the learning of SSL for administrators

    For more details see:

    The IIS 6.0 Resource Kit Tools can help you administer, secure, and manage IIS. Use them to query log files, deploy SSL certificates, employ custom site authentication, verify permissions, troubleshoot problems, migrate your server, run stress tests, and more.

    The following tools are available in this package:

    • IIS 6.0 Migration Tool Version 1.0 Version 1.1 Now Available!
    • Apache to IIS 6.0 Migration Tool Version 1.0
    • CustomAuth Version 1.0
    • IISCertDeploy.vbs Version 1.0
    • IIS Host Helper Service Version 1.0
    • IISState Version 3.0
    • Log Parser Version 2.1 Version 2.2 Now Available!
    • Metabase Explorer Version 1.6
    • Permissions Verifier Version 1.0
    • RemapUrl Version 1.0
    • SelfSSL Version 1.0
    • TinyGet Version 5.2
    • Web Capacity Analysis Tool Version 5.2
    • WFetch Version 1.3

    For more details see:

    IIS - Server Application Unavailable

    I had a most interesting issue occur this morning on my work pc with IIS 5.1


    I zipped up a web site I was working on last night and sent it home as an Email message. I then extracted it and worked on it at home without issues. I then used WinRAR to rar it up and sent it back to work. I then extracted the files (by drag & drop from within WINRAR) and went to run the application. I instantly received the following message in my web browser.

    Server Application Unavailable

    The web application you are attempting to access on this web server is currently unavailable.  Please hit the "Refresh" button in your web browser to retry your request.

    Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur.

    • The message came up instantly as soon as I hit refresh - no delay!
    • There was this message in the Windows Event Log each time I refreshed the page.

      Event ID : 1088, Failed to execute request because the App-Domain could not be created
      Error: 0x80070005 Access is denied

    I did a couple of things most people do in this situation:

    • Performed an IIS Reset - Same problem!
    • Rebooted the PC - Same problem!
    • Verified the services were all working - all ok!
    • Checked the event log again - same messages!

    I then thought about requesting a static file:

    • This worked fine

    I then renamed web.config to web.config1 and copied my original web.config file from the original zip over the current one!

    • The web application was working again

    So I renamed the web.config files around the other way so that the now working web.config was called web.config1

    • Web application was again failing!

    I then checked the permissions on the web.config files

    Caused the Error   Did not cause the error

    As you can see from the above permissions there was no permissions defined for the ASP.NET machine account or the IUSR_ and IWAM_ accounts.

    Now more investigating into WinRAR.

    • I had dragged my files from within the WinRAR window to the folder directory without using the Extract To option!

    I assume that this actually extracts the file to a temp folder and then moves the file to the actual folder where it is dragged to. This causes the following scenario.

    • The file is extracted to a temp directory - the file inherits the security settings of that directory
    • The file is then moved to the final directory where I dragged it to - this causes the file to retain the security settings it originally had in the temp folder.

    Using the Extract To option in WinRAR however correctly extracts the file to the correct folder where it inherits the security settings of the folder.

    Just something you should watch out for if you see a similar issue.

    IIS - IIS Request Processing

    Ken Schaefer [IIS MVP] has produced a very useful flow chart of how IIS 6 handles requests, this flow chart can be very useful in diagnosing 401 and 403 status codes.

    For more details see Ken's site at

    Debugging IIS Crash/Hang situations with IIS State

    Often the most effective way to diagnose the root cause of an IIS Crash or Hang situation is to use a debugging tool that allows you to look inside the various processes that IIS uses (such as dllhost.exe or w3wp.exe). Whilst diagnostic tools like AuthDiag and SSLDiag can help solve configuration issues which are preventing your IIS Server from running properly, a crash or hang usually is caused by faulty code, hardware issues, or problems connecting to remote resources (e.g. a remote database server), and these problems may not deterministically manifest themselves.

    For a step by step guide to setup and using IIS State please see the following article:

    IIS Crash/Hang Agent & IIS Dump
    The Internet Information Services (IIS) debug tools are designed to help determine which requests have caused IIS to crash and to log specific information when a request does not respond in an expected time period. This toolkit is made up of 2 main tools:
    • IIS Crash/Hang Agent: tracks all requests as they enter IIS and leave IIS and will log requests that are still being processed if IIS terminates unexpectedly. This tool also allows an administrator to configure a command line to run whenever a request takes too long to respond indicating a potential hang.
    • IIS Dump: The default command line for gathering information on Hangs; this tool is able to dump many different items at once for root cause analysis investigation. IIS Dump can produce text reports on stacks for each thread in an IIS-related process, dump files for each IIS-related process, dump the Metabase in an XML format file, and provide system DLL version information.

    For more information see -