Search my blog

Some of my readers



 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

posted on Friday, June 02, 2006 8:45 AM | Filed Under [ c# IIS IIS / Tools / Administration IIS / Tools / Scripts ]