用编程方式给IIS里增加MIME类型

来源:互联网 发布:阿里云免费体验 编辑:程序博客网 时间:2024/05/13 02:11

最近在搞一个安装程序,其中有一步,是要给iis增加一个新的mime类型.log,好让用户能下载iis的日志。

单击在新窗口中打开图片,Ctrl+滚轮缩放图片

iis的所有的操作都可以用System.DirectoryServices里的功能完成。mime类型一定也可以。果然,经过一翻寻找,在msdn中找到。原文如下:http://msdn2.microsoft.com/en-us/library/ms525901.aspx

这里面关键一步是引用Active DS IIS Namespace Provider,这样你就能使用IISOle这个命名空间,和IISMimeType 这个类。

单击在新窗口中打开图片,Ctrl+滚轮缩放图片

实际代码并不复杂,全部在下面,比较简单,就不多解释。
using System;using System.IO;using System.DirectoryServices;using System.Reflection;using System.Runtime.InteropServices;using System.Collections;namespace System_DirectoryServices_DirectoryEntry_ConfigIIS{    class Program    {        static void Main(string[] args)        {            SetMimeTypeProperty("IIS://localhost/W3SVC/1/Root", ".hlp", "application/winhlp");        }        static void SetMimeTypeProperty(string metabasePath, string newExtension, string newMimeType)        {            //  metabasePath is of the form "IIS://<servername>/<path>"                  //  for example "IIS://localhost/W3SVC/1/Root"                 //  newExtension is of the form ".<extension>", for example, ".hlp"                  //  newMimeType is of the form "<application>", for example, "application/winhlp"                Console.WriteLine("/nAdding {1}->{2} to the MimeMap property at {0}:",                metabasePath, newExtension, newMimeType);            try            {                DirectoryEntry path = new DirectoryEntry(metabasePath);                PropertyValueCollection propValues = path.Properties["MimeMap"];                Console.WriteLine(" Old value of MimeMap has {0} elements", propValues.Count);                object exists = null;                foreach (object value in propValues)                {                    // IISOle requires a reference to the Active DS IIS Namespace Provider in Visual Studio .NET              IISOle.IISMimeType mimetypeObj = (IISOle.IISMimeType)value;                             Console.WriteLine("  {0}->{1}", mimetypeObj.Extension, mimetypeObj.MimeType);                    if (newExtension == mimetypeObj.Extension)                        exists = value;                }                if (null != exists)                {                    propValues.Remove(exists);                    Console.WriteLine(" Found an entry for {0}; removing it before adding the new one.",                        newExtension);                }                IISOle.MimeMapClass newObj = new IISOle.MimeMapClass();                newObj.Extension = newExtension;                newObj.MimeType = newMimeType;                propValues.Add(newObj);                path.CommitChanges();                Console.WriteLine(" Done.");            }            catch (Exception ex)            {                if ("HRESULT 0x80005006" == ex.Message)                    Console.WriteLine(" Property MimeMap does not exist at {0}", metabasePath);                else                    Console.WriteLine("Failed in SetMimeTypeProperty with the following exception: /n{0}",                        ex.Message);            }        }    }}
 
原创粉丝点击