如何查询IIS中的MIME类型映射?

如何查询IIS中的MIME类型映射?,iis,iis-7,mime,mime-types,Iis,Iis 7,Mime,Mime Types,如何通过编程读取IIS的MIME类型?我希望在将数据流传输到客户机时使用它们 任何提示或API都将受到欢迎注册到系统的Mime类型在注册表中的“HKEY\U CLASSES\U ROOT\Mime\Database\Content Type”下定义 您是否正在为IIS中定义的特定网站寻找mime类型?我假设这只是IIS7,您正在使用C#3.0或更高版本: 使用Microsoft.Web.Administration; .... 使用(ServerManager=newservermanager(

如何通过编程读取IIS的MIME类型?我希望在将数据流传输到客户机时使用它们


任何提示或API都将受到欢迎

注册到系统的Mime类型在注册表中的“HKEY\U CLASSES\U ROOT\Mime\Database\Content Type”下定义


您是否正在为IIS中定义的特定网站寻找mime类型?

我假设这只是IIS7,您正在使用C#3.0或更高版本:

使用Microsoft.Web.Administration;
....
使用(ServerManager=newservermanager())
{
//如果对全球mimeMap感兴趣:
var config=serverManager.GetApplicationHostConfiguration();
//如果对特定站点的mimeMap感兴趣,请使用:
//var config=serverManager.GetWebConfiguration(“默认网站”);
var staticContent=config.GetSection(“system.webServer/staticContent”);
var mimeMap=staticContent.GetCollection();
//打印所有mime类型
foreach(mimeMap中的var mimeType)
{
Console.WriteLine(String.Format(“{0}={1}”),mimeType[“fileExtension”],
mimeType[“mimeType”]);
}
//根据文件扩展名查找mime类型
var mt=mimeMap.Where(
a=>(字符串)a.Attributes[“fileExtension”]。Value==“.pdf”
).FirstOrDefault();
如果(mt!=null)
{
WriteLine(“.pdf的Mime类型为:“+mt[“mimeType”]”);
}
}
您需要在
c:\windows\system32\inetsrv
中引用
Microsoft.Web.Administration.dll


您的代码也需要管理员权限才能执行此操作。

作为读取注册表或降低配置目录安全性的替代方法,如果使用ASP.Net 4.5或更高版本,则在

中有一个预填充的MIME数据库,您可以按如下方式使用:

void Page_Init()
{
    string[] extensions = new string[]
    {
        ".pdf",
        ".xls",
        ".xlsx",
        ".ppt",
        ".pptx",
        ".mp3",
        ".ogg",
        ".svg",
        ".pdf",
        ".png",
    };

    foreach (string extension in extensions)
    {
        string mimeType = MimeMapping.GetMimeMapping(extension);
        Response.Write(String.Format("{0} => {1}<br />",
                extension,
                mimeType
            ));
    }
}

我终于开始着手实现它,似乎我需要给IUSR访问
C:\Windows\System32\inetsrv
。据我所知,这会显著降低系统安全性。你的想法是什么?@maker-请看我回答的最后一句话“你的代码也需要管理员权限才能做到这一点。”。您是正确的,允许站点的匿名用户帐户具有提升的权限不是一个好主意。我通过在一个单独的进程(windows服务托管的远程处理或WCF应用程序)中沙箱化高度特权的操作来解决这个问题并且只公开完成手头工作所需的特定功能。@maker-如果您只是在阅读这些值,那么Carlos Aguilar Mares的这篇文章可能会有用:一句警告的话HtmlAgilityPack 1.4.0.0只使用注册表项HKEY_CLASSES_ROOT。因此,您需要访问注册表和要在服务器上注册的文件类型。这篇博客文章很好,不知道为什么这不是公认的答案。那么,这需要管理员权限吗?它不需要管理员权限。当最初提出这个问题时,库函数不存在,因此OP选择了当时的最佳答案。我一直在使用更新的方法,它对我很有用。
.pdf => application/pdf
.xls => application/vnd.ms-excel
.xlsx => application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.ppt => application/vnd.ms-powerpoint
.pptx => application/vnd.openxmlformats-officedocument.presentationml.presentation
.mp3 => audio/mpeg
.ogg => video/ogg
.svg => image/svg+xml
.pdf => application/pdf
.png => image/png