我想从代码隐藏文件中找到IIS ASP.NET Web服务器上给定文件扩展名的mime类型。

我想搜索服务器提供文件时使用的相同列表。这意味着将包括网络服务器管理员添加到Mime Map中的任何MIME类型。

我可以盲目使用

HKEY_CLASSES_ROOT\MIME\Database\Content Type

但这没有被记录为与IIS使用的列表相同,也没有被记录为存储Mime Map的位置。

我可以盲目地调用FindMimeFromData,但是没有记录为与IIS使用的列表相同,也不能保证也从该调用中返回IIS Mime Map。

最佳答案

这是我早些时候做的:

public static string GetMimeTypeFromExtension(string extension)
{
    using (DirectoryEntry mimeMap =
           new DirectoryEntry("IIS://Localhost/MimeMap"))
    {
        PropertyValueCollection propValues = mimeMap.Properties["MimeMap"];

        foreach (object value in propValues)
        {
            IISOle.IISMimeType mimeType = (IISOle.IISMimeType)value;

            if (extension == mimeType.Extension)
            {
                return mimeType.MimeType;
            }
        }

        return null;

    }
}

在“COM”选项卡下添加对System.DirectoryServices的引用和对Active DS IIS Namespace Provider的引用。扩展名必须有前导点,即.flv

10-08 00:32