|
|
June 2006 Entries
The IIS Metabase Explorer provides a graphical user interface for viewing and editing IIS metabase stores. You can use Metabase Explorer to export and import keys and subkeys, copy keys and subkeys, edit security settings for keys, and compare records within the metabase.
This tool can be used to perform a wide variety of tasks to help you manage the IIS Metabase. For example, you can use it to back up or restore parts of the metabase. You can also use it to reset the default IIS Web site, or allow a non-administrator account to change the metabase by adding a restricted write access control list (ACL) to specific metabase nodes.
Metabase Explorer can be used to edit the metabase for IIS versions 4.0, 5.0, and 6.0, and lets you connect to both local and remote metabases.
To use Metabase Explorer, you’ll need to install the IIS 6.0 Resource Kit Tools (see Knowledge Base article 840671 The IIS 6.0 Resource Kit Tools for download details).
MetabaseExplorer is compatible with the Microsoft® Windows® 2000, Windows XP Professional, and Windows Server 2003 operating systems. It also requires Microsoft® .NET Framework version 1.1

The HttpExpires property is documented at the following URL.
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/3e1d9fbb-6910-4648-a2bb-11a945ca7980.mspx?mfr=true
This simple c# console application will display the settings for the HttpExpires property at the root level of the default web site.
Basically the value is encoded as follows:
- If the value is a blank string then there is no content expiry.
- If the value starts with a D, then it is using a dynamic expiration period. This period is appended after the D and is stored as the number of seconds in hexidecimal format.
Example: “D, 0x15180” - this 0x15180 is the same as 86,400 seconds or 1 day.
- If the value starts with an S then the following value is a GMT time of when the expiration will take place.
Example: “S, Sat, 08 Jul 2006 12:00:00 GMT”
using System; using System.Collections.Generic; using System.Text; using System.DirectoryServices; namespace IISHTTPExpires { class Program { static void Main(string[] args) { Console.WriteLine("IIS HTTP Expires - c#"); Console.WriteLine(); // Serve to connect to... string ServerName = "LocalHost"; // Define the path to the metabase string MetabasePath = "IIS://" + ServerName + "/W3SVC/1/ROOT"; try { // Talk to the IIS Metabase to read the MimeMap Metabase key DirectoryEntry Entry = new DirectoryEntry(MetabasePath); // Get the Mime Types as a collection PropertyValueCollection pvc = Entry.Properties["HTTPExpires"]; string HttpExpires = pvc.Value.ToString(); if (HttpExpires.Length == 0) { Console.WriteLine("HttpExpires is not enabled!"); } else { char HttpExpiresType = HttpExpires[0]; switch (HttpExpiresType)
{
case 'D': string Seconds = HttpExpires.Substring(3); if (Seconds == "0") Seconds = "Immediately"; else if (Seconds.StartsWith("0x")==true) Seconds = "in " + int.Parse(HttpExpires.Substring(5), System.Globalization.NumberStyles.HexNumber).ToString() + " Seconds"; else Seconds = "in " + Seconds + " Seconds"; Console.WriteLine("HttpExpires {0}", Seconds); break; case 'S': Console.WriteLine("HttpExpires {0}", HttpExpires.Substring(2)); break; default: Console.WriteLine("Unknown HttpExpires Type : {0}", HttpExpiresType); break; } } } catch (Exception ex) { Console.WriteLine("Failed to read HttpExpires property with the following exception: \n{0}", ex.Message); } finally { Console.Read(); } } } }
using System;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;
namespace EnumSites
{
class Program
{
static void Main(string[] args)
{
DirectoryEntry entry = new DirectoryEntry("IIS://localhost/w3svc/1");
PropertyValueCollection pvc = entry.Properties["ServerBindings"];
foreach (object value in pvc)
{
// Format is IPAddress:Port:HostHeader
string[] Bits = value.ToString().Split(':');
string IPAddress = Bits[0];
string TCPIPPort = Bits[1];
string HostHeader = Bits[2];
Console.WriteLine("IP = {0}, Port = {1}, Header = {2}",
(IPAddress.Length == 0) ? "(All Unassigned)" : IPAddress,
TCPIPPort,
(HostHeader.Length == 0) ? "(No Host Header)" : HostHeader);
}
Console.Read();
}
}
}
This simple code will allow you to display the IP Address, TCP/IP Port, and Host Header values for the default web site. The default web site has an Instance ID of 1.
If you want to display for a different web site then change the "IIS://localhost/w3svc/1" to another instance. You can determine the instance ID from the log file name in the log entry properties dialog in the IIS manager.
I had the pleasure to present to the Christchurch .NET Users Group ( http://www.dot.net.nz ) 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.
References:
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
References:
IIS7
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.
References
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.
I have had my first set of questions & answers on the Microsoft FTP Server published in June IIS Insider section on www.microsoft.com
IIS Insider is a monthly column designed to answer your questions on how to troubleshoot and make the most of Microsoft Internet Information Services (IIS).
The questions I presented are:
-
Adding Virtual Directories to an FTP Server
-
Administering Physical Directories on an FTP Site
-
User Isolation Mode options
The article is up for the month of June (it only went up today June 22) at http://www.microsoft.com/technet/community/columns/insider/default.mspx
After June you can see the details on the IIS Insider column archives
IISxpress is a compression engine for IIS 5.0/5.1/6.0. Based on the ZLIB compression library IISxpress is a high performance, stable, scalable compression extension to IIS. Version 2.0 introduces native 64bit support, new configuration wizards, significant performance improvements (over 100% in some cases) and a new Community Edition which is free for non-commercial, non-governmental use.
IISxpress uses an opt-out rule model to simplify configuration - all content is compressed unless configured otherwise. IISxpress is pre-configured with a suitable set of default rules when first installed, you are free to add and remove rules as you see fit. IISxpress supports rules based on the extension of the file requested, the MIME (content type) type of the response, the path of the request (URI) or the source IP address of the client.
IISxpress allows you to track compression effectiveness at the server level right down to each individual request allowing you to fine tune your server's performance for real world loading.
Key features
- User friendly interface
- Highly configurable
- Real time compression performance monitoring
- NEW in 2.0: Helpful context sensitive wizards
- NEW in 2.0: 64bit and multi-core support
- NEW in 2.0: Community Edition version – free for non-commercial, non-governmental use.
- Scalable – CPU and memory load sensitive
- Supports ASP, ASP.NET, etc.
Benefits
- Faster content delivery
- Improved site responsiveness
- Less server bandwidth usage
- 100% client browser and search bot compatibility
Audience
- Internet Web Site Administrators
- Intranet Web Site Administrators
- Web Site Developers
Supported Platforms
- Windows 2003: All server versions, 32 and 64 bit
- Windows 2000: Professional and all sever versions
- Windows XP Professional: 32 and 64 bit
See http://www.ripcordsoftware.com/IISxpress/default.aspx for more details
Microsoft have not by the looks of things released the Beta 2 version of Windows Vista to the general public.
This Beta 2 release is now available in three languages (English, German, and Japanese) and in 32-bit and 64-bit editions.
When you register for the Customer Preview Program you will receive the Beta 2 release plus Windows Vista Release Candidate 1 (RC1) — the next major pre-release of Windows Vista — when it is available later this year. The information on this page pertains to both Beta 2 and RC1.
The Customer Preview Program is available in a limited quantity both through download and DVD kit ordering. Once the allotted quantity has been reached the program will be closed and no new orders will be accepted.
There are two ways to get Windows Vista Beta 2:
- Order the DVD kit and have it shipped to your home or office.
- Download the ISO file to your PC
(An ISO file is an exact representation of a CD or DVD, including the content and the logical format. Once you download the ISO file, you’ll need to burn it to a DVD before you can install the software.)
http://www.microsoft.com/windowsvista/getready/preview.mspx
Note: If you install into a Virtual Environment then get ready for very poor performace. You are better to install onto a real PC - performance is about 50 times better compared to the virtual environment.
 Bill Staples, Product Unit Manager on the IIS team, will be hosting an upcoming TechNet Webcast titled Exploring the Future of Web Development and Management with Internet Information Services (IIS) 7.0. Join the WebCast and see cool IIS 7.0 demos for many of the new features. Date/Time: 6/20/2006 1:00 PM Pacific Duration: 90 minutes Attendee Registration URL: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032299053&Culture=en-US
Steve Schofield has written two artricles on how to setup an anonymous “blind drop” and “Blind Get“ FTP server using Microsoft Windows 2003
See these articles
You maybe wondering, what is a “blind drop” server? A “blind drop” FTP server provides individuals or companies a method to anonymously transfer files using FTP files without having permission to list files or retrieve files on the FTP site. In other words, you can “drop” files onto the server but not see what’s there or retrieve files if you did know what was there. There are benefits for both the end-user and FTP administrator. The end-user doesn’t have to remember a user id and password. The FTP administrator uses NTFS permissions so anonymous users can’t browse or retrieve files. The biggest benefit for the FTP administrator is that they don’t have to maintain user ids and passwords for everyone needing FTP access.
You maybe wondering, what is a “blind get” server? A “blind get” FTP server provides a method to anonymously transfer files using FTP without having permission to list files or add files on the FTP site. In other words, you can “get” files but not see what’s there or retrieve files unless the absolute path is known. There are benefits for both the end-user and FTP administrator. The end-user doesn’t have to remember a user id and password. The FTP administrator uses NTFS permissions so anonymous users can’t browse or add files.
The following script (taken from http://geekswithblogs.net/colinbo) ( and modified a bit by me ) shows how you can configure your production web sites to support the Atlas Framework.
The original registration script for the http handler only registers the script on the first site (site ID 1 - Default Web Site) where as this script will register it on all sites that do not contain it.
The original script from http://geekswithblogs.net/colinbo also had problems in that:
- It did not take any note as to the version of .NET runtime running on the web site!
- The original code could not handle an application pool with no Applications assigned to it.
I have fixed them in the following code:
Source Code Option Explicit
Dim WMIService, ApplicationPool, ApplicationPools, Applications, index, VirtualDirectorySettings
Dim ApplicationName, ScriptMap, FoundMapping, ScriptMapCollection, LastPosition, FrameworkVersion
Const ComputerName = "localhost"
Const ScriptMapExtension = ".asbx"
Const ScriptMapEntry = ".asbx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST"
Set WMIService = GetObject("winmgmts:{authenticationLevel=pktPrivacy}\\" + ComputerName + "\root\microsoftiisv2")
Set ApplicationPools = WMIService.ExecQuery("Select * From IIsApplicationPool Where Name LIKE 'W3SVC/AppPools/%'")
For Each ApplicationPool in ApplicationPools
WScript.Echo "Inspecting Application Pool " + ApplicationPool.Name
ApplicationPool.EnumAppsInPool Applications
if (UBound(Applications) > 0) then
For index = lbound(Applications) to UBound(Applications)
ApplicationName = CleanApplicationName(Applications(index))
WScript.echo "Inspecting " +ApplicationName
Set VirtualDirectorySettings = GetObject( "IIS://" + ComputerName + "/" + ApplicationName)
If Err.number = 0 Then
ScriptMapCollection = VirtualDirectorySettings.ScriptMaps
FoundMapping = False
FrameworkVersion = False
For Each ScriptMap in ScriptMapCollection
if (instr(ScriptMap, "v2.0.50727") <> -1) then FrameworkVersion = true
If LCase(Left(ScriptMap, Len(ScriptMapExtension))) = ScriptMapExtension then
WScript.Echo ApplicationName + " - Updating (Previous: " + ScriptMap + ")"
ScriptMap = ScriptMapEntry
FoundMapping = True
Exit For
End IF
Next
If FoundMapping = False and (FrameworkVersion = true) Then
WScript.Echo "Did not find mapping in " + ApplicationName
LastPosition = UBound(ScriptMapCollection) + 1
Redim Preserve ScriptMapCollection(LastPosition)
WScript.Echo ApplicationName + " - Adding " + ScriptMapExtension
ScriptMapCollection(LastPosition) = ScriptMapEntry
End If
VirtualDirectorySettings.ScriptMaps = ScriptMapCollection
VirtualDirectorySettings.SetInfo
Else
WScript.Echo ApplicationName & " - Unable to locate application virtual directory."
End If
Next
end if
WScript.Echo
Next
' Trims the leading /LM/ and trailing /
Function CleanApplicationName(applicationName)
Dim ReturnValue
If Len(applicationName) < 5 Then
WScript.Echo "applicationName should be greater than 5 characters: " + applicationName
Exit Function
End If
ReturnValue = Mid(applicationName, 5)
ReturnValue = Mid(ReturnValue, 1, Len(ReturnValue) - 1)
CleanApplicationName = ReturnValue
End Function
For more sample code like this visit : http://geekswithblogs.net/colinbo
I am running SBS2003 at home and as part of this I am running the following on the server:
- Microsoft Windows 2003 Server SP1
- Microsoft Active Directory
- Microsoft Exchange Server 2003
- Microsoft SQL Server 2000 (recently upgraded to Microsoft SQL Server 2005)
- Sophos Antivirus
- Microsoft IIS 6.0 with 12 sites
Ever since I have upgraded the SQL server from 2000 to 2005 I have noticed that in this blog I am getting error messages saying Timeout when connecting to the SQL server.
I am not suprised since the machine only has 1 GB of Ram and Exchange will consume as much as it can.
But I never had this problems before - I never got a timeout until SQL was upgraded to SQL 2005.
If I free memory on the server then the web site works again...
I am not sure if SQL 2005 just wants more RAM than 2000 but it is looking like that.
I am in a bit of a situation since the server is running in as much memory as the box will take - no point upgrading until I can justify a super powerful box running Windows 2003 Server R2 with Microsoft Virtual Server 2005.
So just a note to people thinking of upgrading to SQL 2005 - you may need more RAM....
Back a few months ago Microsoft went to Las Vegas to put on a share called Mix06. If you do business on the Web today, it's likely that more than 90% of your customers reach you via Microsoft® Internet Explorer and/or Microsoft Windows®. Come to MIX and learn how the next versions of these products, due later this year, are going to dramatically improve your customers' experience. Explore a wide range of new Web technologies that Microsoft is delivering to help you unlock new revenue opportunities and lower development costs. Learn about the future of Internet Explorer and join us in a discussion about how we can build the ideal Web surfing platform to meet your needs and those of your customers.
- Be the first to get the latest preview build of IE7
- Work with the members of the Internet Explorer team in the Compatibility Lab to get your site ready for IE7
- Test drive "Atlas," Microsoft's powerful new framework for building cross–browser, cross–platform AJAX applications
- Explore Windows Live!, Microsoft's new consumer services strategy
- Learn how to deliver revolutionary, media–rich Web content with the new Windows Presentation Foundation
- Find out how to extend your content, media and services into the living room with Windows Media Center and Xbox 360™
- More than 50 separate sessions and discussions for Web developers, designers and business professionals
All 52 sessions are now online and free
http://mix06.com/Default.aspx
A new article up on www.iis.net has been published that shows just how far you can configure the new IIS 7 web server. The article is all about Extensibility, and is an end-to-end example of how to extend the IIS 7 web server with a custom request handler. It will show how to add API and command-line support for the configuration of this handler and how to write a User interface module that can plug into the IIS Management Interface.
Feature Set:
- Managed handler inserts a copyright message into image files that are requested
- Copyright message feature is configuration driven and uses the new IIS7 configuration system
- Configuration can be schematized and made accessible to configuration API’s, WMI scripting and IIS command-line tools
- User Interface Extension Module allows configuration of copyright message feature through the IIS7 User Interface
Wow this is really a full article on how to extend IIS...
The article is quite long in fact it is over 12 on www.iis.net so the print preview option is a better way to view and follow the article http://www.iis.net/1076/SinglePageArticle.ashx
With the launch last week of Beta 2 of the 2007 Office system, Microsoft has made available a wide array of end user elearning courses at http://www.microsoft.com/learning/office2007/default.mspx
The courses are divided across three key audiences, namely home and office users, IT professionals and developers, as per the details below.
Home and Office users
- Introduction to the New Microsoft® User Interface
- What’s New in Microsoft® Office Access 2007
- What’s New in Microsoft® Office InfoPath® 2007
- What’s New in Microsoft® Office Outlook® 2007
- What’s New in Microsoft® Office PowerPoint® 2007
- What’s New in Microsoft® Office Word 2007
- What’s New in Microsoft® Office OneNote® 2007
- What’s New in Microsoft® Office Visio® 2007
- What’s New in Microsoft® Office Excel® 2007
- What’s New in Microsoft® Office Groove 2007
Developers
- Inside Look at Building and Developing Solutions with Microsoft® Office SharePoint Servers 2007
- Inside Look at Developing with Microsoft® Windows SharePoint Services 3.0
IT Professionals
- Getting Started with Microsoft® Office SharePoint Server 2007 (Beta)
- Getting Started with Microsoft® Office SharePoint Server 2007 (Beta) e-Hands-on-Lab
- Introduction to Windows SharePoint Services 3.0 Virtual Lab
- Implementing and Administering Windows SharePoint Services 3.0 Virtual Lab
- Getting Started with the 2007 Microsoft® Office System (Beta)
- Getting Started with the 2007 Microsoft® Office System (Beta) e-Hands-on Lab
- Benefits of Deploying the 2007 Office System Virtual Lab
- Overview of the 2007 Microsoft® Office System Components Virtual Lab
- Getting Started with Windows SharePoint Services 3.0 (Beta)
- Getting Started with Windows SharePoint Services 3.0 (Beta) e-Hands-on Lab
- Office SharePoint Server 2007 Functional and Architectural Overview Virtual Lab
- Enterprise Content Management with Office SharePoint Server 2007 Virtual Lab
- Organizing and Finding Resources with Office SharePoint Server 2007 Virtual Lab
- Business Solutions Using Office SharePoint Server 2007 Virtual Lab
- Deploying Microsoft® Windows Vista and the 2007 Office System Client Products (Beta)
More details and the courses are available at http://www.microsoft.com/learning/office2007/default.mspx
The following c# application will return all of the MimeMaps defined in an IIS instance. The MimeMaps hold the mime types that IIS uses to return the ContentType header.
An example of such a header is application/octetstream
This example requires a reference to the Active DS IIS Namespace Provider in Visual Studio .NET. This reference enables you to use the IISOle namespace to access the IISMimeType class.
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Specialized;
using System.DirectoryServices;
using System.Collections;
namespace IISMIMEType
{
class Program
{
static void Main(string[] args)
{
// Maintain a sorted list to contain the MIME Types
SortedList sl = new SortedList();
Console.WriteLine("IIS Mime Map - c#");
Console.WriteLine();
// Serve to connect to...
string ServerName = "LocalHost";
// Define the path to the metabase
string MetabasePath = "IIS://" + ServerName + "/MimeMap";
// Note: This could also be something like
// string MetabasePath = "IIS://" + ServerName + "/w3svc/1/root";
try
{
// Talk to the IIS Metabase to read the MimeMap Metabase key
DirectoryEntry MimeMap = new DirectoryEntry(MetabasePath);
// Get the Mime Types as a collection
PropertyValueCollection pvc = MimeMap.Properties["MimeMap"];
// Add each Mime Type so we can display it sorted later
foreach (object Value in pvc)
{
// Convert to an IISOle.MimeMap - Requires a connection to IISOle
// IISOle can be added to the references section in VS.NET by selecting
// Add Reference, selecting the COM Tab, and then finding the
// Active DS Namespace provider
IISOle.MimeMap mimetypeObj = (IISOle.MimeMap)Value;
// Add the mime extension and type to our sorted list.
sl.Add(mimetypeObj.Extension, mimetypeObj.MimeType);
}
// Render the sorted MIME entries
if (sl.Count == 0)
Console.WriteLine("No MimeMap entries are defined at {0}!", MetabasePath);
else
foreach (string Key in sl.Keys)
Console.WriteLine("{0} : {1}", Key.PadRight(20), sl[Key]);
}
catch (Exception ex)
{
if ("HRESULT 0x80005006" == ex.Message)
Console.WriteLine(" Property MimeMap does not exist at {0}", MetabasePath);
else
Console.WriteLine("An exception has occurred: \n{0}", ex.Message);
}
}
}
}
Example Output
| .* |
application/octet-stream |
| .323 |
text/h323 |
| .acx |
application/internet-property-stream |
| .ai |
application/postscript |
| .aif |
audio/x-aiff |
| .aifc |
audio/aiff |
| .aiff |
audio/aiff |
| .application |
application/x-ms-application |
| .asf |
video/x-ms-asf |
| .asr |
video/x-ms-asf |
| .asx |
video/x-ms-asf |
| .au |
audio/basic |
| .avi |
video/x-msvideo |
| .axs |
application/olescript |
| .bas |
text/plain |
| .bcpio |
application/x-bcpio |
| .bin |
application/octet-stream |
| .bmp |
image/bmp |
| .c |
text/plain |
| .cat |
application/vndms-pkiseccat |
| .cdf |
application/x-cdf |
| .cer |
application/x-x509-ca-cert |
| .clp |
application/x-msclip |
| .cmx |
image/x-cmx |
| .cod |
image/cis-cod |
| .cpio |
application/x-cpio |
| .crd |
application/x-mscardfile |
| .crl |
application/pkix-crl |
| .crt |
application/x-x509-ca-cert |
| .csh |
application/x-csh |
| .css |
text/css |
| .dcr |
application/x-director |
| .deploy |
application/octet-stream |
| .der |
application/x-x509-ca-cert |
| .dib |
image/bmp |
| .dir |
application/x-director |
| .disco |
text/xml |
| .dll |
application/x-msdownload |
| .doc |
application/msword |
| .dot |
application/msword |
| .dvi |
application/x-dvi |
| .dxr |
application/x-director |
| .eml |
message/rfc822 |
| .eps |
application/postscript |
| .etx |
text/x-setext |
| .evy |
application/envoy |
| .exe |
application/octet-stream |
| .fif |
application/fractals |
| .flr |
x-world/x-vrml |
| .gif |
image/gif |
| .gtar |
application/x-gtar |
| .gz |
application/x-gzip |
| .h |
text/plain |
| .hdf |
application/x-hdf |
| .hlp |
application/winhlp |
| .hqx |
application/mac-binhex40 |
| .hta |
application/hta |
| .htc |
text/x-component |
| .htm |
text/html |
| .html |
text/html |
| .htt |
text/webviewhtml |
| .ico |
image/x-icon |
| .ief |
image/ief |
| .iii |
application/x-iphone |
| .ins |
application/x-internet-signup |
| .isp |
application/x-internet-signup |
| .IVF |
video/x-ivf |
| .jfif |
image/pjpeg |
| .jpe |
image/jpeg |
| .jpeg |
image/jpeg |
| .jpg |
image/jpeg |
| .js |
application/x-javascript |
| .latex |
application/x-latex |
| .lsf |
video/x-la-asf |
| .lsx |
video/x-la-asf |
| .m13 |
application/x-msmediaview |
| .m14 |
application/x-msmediaview |
| .m1v |
video/mpeg |
| .m3u |
audio/x-mpegurl |
| .man |
application/x-troff-man |
| .manifest |
application/x-ms-manifest |
| .mdb |
application/x-msaccess |
| .me |
application/x-troff-me |
| .mht |
message/rfc822 |
| .mhtml |
message/rfc822 |
| .mid |
audio/mid |
| .mmf |
application/x-smaf |
| .mny |
application/x-msmoney |
| .mov |
video/quicktime |
| .movie |
video/x-sgi-movie |
| .mp2 |
video/mpeg |
| .mp3 |
audio/mpeg |
| .mpa |
video/mpeg |
| .mpe |
video/mpeg |
| .mpeg |
video/mpeg |
| .mpg |
video/mpeg |
| .mpp |
application/vnd.ms-project |
| .mpv2 |
video/mpeg |
| .ms |
application/x-troff-ms |
| .mvb |
application/x-msmediaview |
| .nc |
application/x-netcdf |
| .nws |
message/rfc822 |
| .oda |
application/oda |
| .ods |
application/oleobject |
| .p10 |
application/pkcs10 |
| .p12 |
application/x-pkcs12 |
| .p7b |
application/x-pkcs7-certificates |
| .p7c |
application/pkcs7-mime |
| .p7m |
application/pkcs7-mime |
| .p7r |
application/x-pkcs7-certreqresp |
| .p7s |
application/pkcs7-signature |
| .pbm |
image/x-portable-bitmap |
| .pdf |
application/pdf |
| .pfx |
application/x-pkcs12 |
| .pgm |
image/x-portable-graymap |
| .pko |
application/vndms-pkipko |
| .pma |
application/x-perfmon |
| .pmc |
application/x-perfmon |
| .pml |
application/x-perfmon |
| .pmr |
application/x-perfmon |
| .pmw |
application/x-perfmon |
| .png |
image/png |
| .pnm |
image/x-portable-anymap |
| .pnz |
image/png |
| .pot |
application/vnd.ms-powerpoint |
| .ppm |
image/x-portable-pixmap |
| .pps |
application/vnd.ms-powerpoint |
| .ppt |
application/vnd.ms-powerpoint |
| .prf |
application/pics-rules |
| .ps |
application/postscript |
| .pub |
application/x-mspublisher |
| .qt |
video/quicktime |
| .ra |
audio/x-pn-realaudio |
| .ram |
audio/x-pn-realaudio |
| .ras |
image/x-cmu-raster |
| .rgb |
image/x-rgb |
| .rmi |
audio/mid |
| .roff |
application/x-troff |
| .rtf |
application/rtf |
| .rtx |
text/richtext |
| .scd |
application/x-msschedule |
| .sct |
text/scriptlet |
| .setpay |
application/set-payment-initiation |
| .setreg |
application/set-registration-initiation |
| .sh |
application/x-sh |
| .shar |
application/x-shar |
| .sit |
application/x-stuffit |
| .smd |
audio/x-smd |
| .smx |
audio/x-smd |
| .smz |
audio/x-smd |
| .snd |
audio/basic |
| .spc |
application/x-pkcs7-certificates |
| .spl |
application/futuresplash |
| .src |
application/x-wais-source |
| .sst |
application/vndms-pkicertstore |
| .stl |
application/vndms-pkistl |
| .stm |
text/html |
| .sv4cpio |
application/x-sv4cpio |
| .sv4crc |
application/x-sv4crc |
| .t |
application/x-troff |
| .tar |
application/x-tar |
| .tcl |
application/x-tcl |
| .tex |
application/x-tex |
| .texi |
application/x-texinfo |
| .texinfo |
application/x-texinfo |
| .tgz |
application/x-compressed |
| .tif |
image/tiff |
| .tiff |
image/tiff |
| .tr |
application/x-troff |
| .trm |
application/x-msterminal |
| .tsv |
text/tab-separated-values |
| .txt |
text/plain |
| .uls |
text/iuls |
| .ustar |
application/x-ustar |
| .vcf |
text/x-vcard |
| .wav |
audio/wav |
| .wbmp |
image/vnd.wap.wbmp |
| .wcm |
application/vnd.ms-works |
| .wdb |
application/vnd.ms-works |
| .wks |
application/vnd.ms-works |
| .wmf |
application/x-msmetafile |
| .wps |
application/vnd.ms-works |
| .wri |
application/x-mswrite |
| .wrl |
x-world/x-vrml |
| .wrz |
x-world/x-vrml |
| .wsdl |
text/xml |
| .xaf |
x-world/x-vrml |
| .xbm |
image/x-xbitmap |
| .xla |
application/vnd.ms-excel |
| .xlc |
application/vnd.ms-excel |
| .xlm |
application/vnd.ms-excel |
| .xls |
application/vnd.ms-excel |
| .xlt |
application/vnd.ms-excel |
| .xlw |
application/vnd.ms-excel |
| .xml |
text/xml |
| .xof |
x-world/x-vrml |
| .xpm |
image/x-xpixmap |
| .xsd |
text/xml |
| .xsl |
text/xml |
| .xwd |
image/x-xwindowdump |
| .z |
application/x-compress |
| .zip |
application/x-zip-compressed |
| |
For more details on MimeMaps see:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/b9b7a30c-5d24-4310-bb70-398c3129f6b3.asp
For more details on using System.DirectoryServices to configure IIS see:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/d39fae66-abe7-4902-a3fc-f36151561f01.asp?frame=true
Windows XP IIS Manager v1.7 aka EasyIIS
I keep forgetting to blog about this tool which is up on www.codeproject.com - this tool includes source in C++ and the binary files as well.
Why do you want it?
Well basically IIS on Windows 2000 Professional or Windows XP Professional will only allow you to create one web site. This can be a problem when developing code for multiple web sites (not such an issue with ASP.NET v2 with the build in Development Web Server but still an issue).
So IIS will only allow the Default Web Site via the UI, but you have always been able to create new web sites using ADSI or WMI so why do you need it?
Simple - it makes life easy...
Limitations
Like most of the limitation in IIS on Windows XP you can't get get around them. Althgouh you can create multuple sites you can only have one of them active at a time. This means that you can still only really work on the one project at once.
Also there may be issues with the creation of Application Root's based on some of the comments but in general a very useful tool.
You can download this tool and its source code from http://www.codeproject.com/w2k/EasyIIS.asp
Source Code
Note: You will need to add a reference to System.DirectoryServices if you are using VisualStudio.net using System;
using System.DirectoryServices;
namespace IISSample
{
static class Program
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
const string WebServerSchema = "IIsWebServer"; // Case Sensitive
string ServerName = "LocalHost";
DirectoryEntry W3SVC = new DirectoryEntry("IIS://" + ServerName + "/w3svc");
foreach (DirectoryEntry Site in W3SVC.Children)
{
if (Site.SchemaClassName == WebServerSchema)
{
Console.WriteLine("WebSite Instance ID : " +Site.Name);
foreach (string PropertyName in Site.Properties.PropertyNames)
{
Console.WriteLine(PropertyName);
PropertyValueCollection pvc = Site.Properties[PropertyName];
foreach(object Value in pvc)
Console.WriteLine(" " + Value.ToString());
}
}
Console.WriteLine("".PadRight(80, '-'));
}
}
}
}
Example Output:
ServerSize 1 NotDeletable True FrontPageWeb True ServerAutoStart True ServerState 2 ServerComment Default Web Site KeyType IIsWebServer DefaultDoc Default.htm,Default.asp,index.htm,iisstart.asp SecureBindings :443: ServerBindings :80: :9090:chris CPUResetInterval 1440 CPULoggingInterval 60 CPULoggingOptions 1 CPULoggingMask 255 CPUCGIEnabled True CPUAppEnabled True AnonymousPasswordSync True LogType 1 LogFilePeriod 1 LogFileTruncateSize 20971520 LogExtFileFlags 1414 DirBrowseFlags 1073741886 CacheISAPI True AllowKeepAlive True CGITimeout 300 ConnectionTimeout 900 MaxConnections 10 ContentIndexed True PasswordChangeFlags 6 AspLogErrorRequests True AspScriptFileCacheSize 250 AspScriptEngineCacheMax 125 AspExceptionCatchEnable True AspTrackThreadingModel False AspAllowOutOfProcComponents True AspEnableAspHtmlFallback False AspEnableChunkedEncoding True AspEnableTypelibCache True AspErrorsToNTLog False AspProcessorThreadMax 25 AspRequestQueueMax 3000 AspThreadGateEnabled False AspThreadGateTimeSlice 1000 AspThreadGateSleepDelay 100 AspThreadGateSleepMax 50 AspThreadGateLoadLow 50 AspThreadGateLoadHigh 80 AspMaxDiskTemplateCacheFiles 1000 AspAllowSessionState True AspBufferingOn True AspEnableParentPaths True AspSessionTimeout 20 AspQueueTimeout -1 AspCodepage 0 AspScriptTimeout 90 AspScriptErrorSentToBrowser True AppAllowDebugging False AppAllowClientDebug False AspKeepSessionIDSecure False AspBufferingLimit 134217728 AspEnableApplicationRestart True AspQueueConnectionTestTime 3 AspSessionMax -1 AspLCID 2048 AspMaxRequestEntityAllowed 1073741824 AuthFlags 5 AnonymousUserName IUSR_CCROWE AnonymousUserPass O0vqT^=Vz:2\9& NTAuthenticationProviders Negotiate,NTLM LogPluginClsid {FF160663-DE82-11CF-BC0A-00AA006111E0} Realm ap.trimblecorp.net AspScriptLanguage VBScript AspScriptErrorMessage An error occurred on the server when processing the URL. Please contact the system administrator. AdminACL System.__ComObject LogFileDirectory C:\WINDOWS\system32\LogFiles AspDiskTemplateCacheDirectory %windir%\system32\inetsrv\ASP Compiled Templates HttpErrors 400,*,FILE,C:\WINDOWS\help\iisHelp\common\400.htm 401,1,FILE,C:\WINDOWS\help\iisHelp\common\401-1.htm 401,2,FILE,C:\WINDOWS\help\iisHelp\common\401-2.htm 401,3,FILE,C:\WINDOWS\help\iisHelp\common\401-3.htm 401,4,FILE,C:\WINDOWS\help\iisHelp\common\401-4.htm 401,5,FILE,C:\WINDOWS\help\iisHelp\common\401-5.htm 403,1,FILE,C:\WINDOWS\help\iisHelp\common\403-1.htm 403,2,FILE,C:\WINDOWS\help\iisHelp\common\403-2.htm 403,3,FILE,C:\WINDOWS\help\iisHelp\common\403-3.htm 403,4,FILE,C:\WINDOWS\help\iisHelp\common\403-4.htm 403,5,FILE,C:\WINDOWS\help\iisHelp\common\403-5.htm 403,6,FILE,C:\WINDOWS\help\iisHelp\common\403-6.htm 403,7,FILE,C:\WINDOWS\help\iisHelp\common\403-7.htm 403,8,FILE,C:\WINDOWS\help\iisHelp\common\403-8.htm 403,9,FILE,C:\WINDOWS\help\iisHelp\common\403-9.htm 403,10,FILE,C:\WINDOWS\help\iisHelp\common\403-10.htm 403,11,FILE,C:\WINDOWS\help\iisHelp\common\403-11.htm 403,12,FILE,C:\WINDOWS\help\iisHelp\common\403-12.htm 403,13,FILE,C:\WINDOWS\help\iisHelp\common\403-13.htm 403,15,FILE,C:\WINDOWS\help\iisHelp\common\403-15.htm 403,16,FILE,C:\WINDOWS\help\iisHelp\common\403-16.htm 403,17,FILE,C:\WINDOWS\help\iisHelp\common\403-17.htm 404,*,FILE,C:\WINDOWS\help\iisHelp\common\404b.htm 405,*,FILE,C:\WINDOWS\help\iisHelp\common\405.htm 406,*,FILE,C:\WINDOWS\help\iisHelp\common\406.htm 407,*,FILE,C:\WINDOWS\help\iisHelp\common\407.htm 412,*,FILE,C:\WINDOWS\help\iisHelp\common\412.htm 414,*,FILE,C:\WINDOWS\help\iisHelp\common\414.htm 500,12,FILE,C:\WINDOWS\help\iisHelp\common\500-12.htm 500,13,FILE,C:\WINDOWS\help\iisHelp\common\500-13.htm 500,15,FILE,C:\WINDOWS\help\iisHelp\common\500-15.htm ScriptMaps .asp,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE .cer,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE .cdx,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE .asa,C:\WINDOWS\system32\inetsrv\asp.dll,5,GET,HEAD,POST,TRACE .idc,C:\WINDOWS\system32\inetsrv\httpodbc.dll,5,OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE .shtm,C:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST .shtml,C:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST .stm,C:\WINDOWS\system32\inetsrv\ssinc.dll,5,GET,POST .asax,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .ascx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .ashx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG .asmx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG .aspx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG .axd,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG .vsdisco,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG .rem,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG .soap,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG .config,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .cs,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .csproj,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .vb,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .vbproj,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .webinfo,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .licx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .resx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .resources,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .master,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .skin,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .compiled,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .browser,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .mdb,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .jsl,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .vjsproj,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .sitemap,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .msgx,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG .ad,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .dd,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .ldd,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .sd,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .cd,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .adprototype,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .lddprototype,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .sdm,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .sdmDocument,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .ldb,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .svc,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG .mdf,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .ldf,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .java,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .exclude,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG .refresh,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG HttpCustomHeaders X-Powered-By: ASP.NET MaxBandwidth -1
You can also do this for all of the IIS Classes such as:
| IIsCertMapper |
Maps certificates to Windows accounts. |
| IIsCompressionSchemes |
Global settings for HTTP 1.1 compression schemes. |
| IIsCompressionScheme |
Settings for individual compression schemes. |
| IIsComputer |
Establishes global settings for IIS configuration. |
| IIsCustomLogModule |
Sets properties for custom logging information field nodes. |
| IIsFilter |
Provides information about a specific filter. |
| IIsFilters |
Manages filters. |
| IIsFtpInfo |
Establishes configuration properties for FTP servers in addition to those set at IIsFtpService. |
| IIsFtpServer |
Establishes configuration properties for a single FTP server. |
| IIsFtpService |
Establishes configuration properties common to all FTP servers. |
| IIsFtpVirtualDir |
Sets properties for an individual FTP virtual directory. |
| IIsIPSecurity |
A custom ADSI object you can use to set access permissions by IP address and domain address. |
| IIsLogModule |
Contains information about a specific logging module. |
| IIsLogModules |
Maintains information about installed logging modules. |
| IIsMimeMap |
Manages Multipurpose Internet Mail Extension (MIME) mappings. |
| IIsMimeType |
Used to manipulate the list of valid MIME types. |
| IIsWebDirectory |
Sets properties for an individual Web directory. |
| IIsWebFile |
Sets properties for an individual Web file. |
| IIsWebInfo |
Establishes configuration properties for Web servers in addition to those set at IIsWebService. |
| IIsWebServer |
Establishes configuration properties for a single Web server. |
| IIsWebService |
Establishes configuration properties common to all Web servers. |
| IIsWebVirtualDir |
Sets properties for an individual Web virtual directory. |
Note: Note all classes are available at all levels in the IIS Metabase Hierarchy - so you can not for example get an IIsVirtualDirectory at the same level as the IIsWebServer because it is a child element of an IIsWebServer
For more details see the following references
|