我想从代码隐藏文件中找到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
。