marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/images/b.html" frameborder="0" width="728" scrolling="no" height="90">
最近在搞一个安装程序,其中有一步,是要给iis增加一个新的mime类型.log,好让用户能下载iis的日志。
iis的所有的操作都可以用System.DirectoryServices里的功能完成。mime类型一定也可以。果然,经过一翻寻找,在msdn中找到。原文如下: http://msdn2.microsoft.com/en-us/library/ms525901.aspx
这里面关键一步是引用Active DS IIS Namespace Provider,这样你就能使用IISOle这个命名空间,和IISMimeType 这个类。
实际代码并不复杂,全部在下面,比较简单,就不多解释。
最近在搞一个安装程序,其中有一步,是要给iis增加一个新的mime类型.log,好让用户能下载iis的日志。
iis的所有的操作都可以用System.DirectoryServices里的功能完成。mime类型一定也可以。果然,经过一翻寻找,在msdn中找到。原文如下: http://msdn2.microsoft.com/en-us/library/ms525901.aspx
这里面关键一步是引用Active DS IIS Namespace Provider,这样你就能使用IISOle这个命名空间,和IISMimeType 这个类。
实际代码并不复杂,全部在下面,比较简单,就不多解释。
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);
}
}
}
}