【发布时间】:2011-02-12 13:54:39
【问题描述】:
我正在尝试获取 IIS 服务器 (which you can see was asked and and answered by me 2 years ago) 已知的 mime 类型列表。复制粘贴的答案包括:
GetObject("IIS://LocalHost/MimeMap")msdn
GetObject("IIS://localhost/mimemap")KB246068
GetObject("IIS://localhost/MimeMap")Scott Hanselman's Blog
new DirectoryEntry("IIS://Localhost/MimeMap"))Stack Overflow
new DirectoryEntry("IIS://Localhost/MimeMap"))Stack Overflow
New DirectoryServices.DirectoryEntry("IIS://localhost/MimeMap")Velocity Reviews
你明白了。每个人都同意您使用神奇的路径 iis://localhost/mimemap。这很管用,除了有时不行。
我能找到的关于它为什么失败的唯一线索,is from an IIS MVP, Chris Crowe's, blog:
string ServerName = "LocalHost";
string MetabasePath = "IIS://" + ServerName + "/MimeMap";
// Note: This could also be something like
// string MetabasePath = "IIS://" + ServerName + "/w3svc/1/root";
DirectoryEntry MimeMap = new DirectoryEntry(MetabasePath);
这里有两条线索:
- 他将
iis://localhost/mimemap称为元数据库路径。这听起来像是某种“路径”到“元数据库”。 - 他说元数据库的路径可能是别的东西;他举了一个例子来说明它可能是什么样的。
现在我和整个星球都在将“MetabasePath”硬编码为
iis://localhost/MimeMap
它应该是什么?代码应该做什么来构造一个有效的 MetabasePath?
注意:我没有收到拒绝访问错误,当您的 MetabasePath 无效时,错误是相同的,例如iis://localhost/SoTiredOfThis
【问题讨论】:
-
从问题中不清楚,您是否遇到了安全异常?
-
这不是安全例外。对
DirectoryEntry(MetabasePath)的调用返回正常,它返回一个对象。当您尝试访问任何返回的DirectoryEntry对象的属性时,接下来会出现错误。它们都给出了 COM“未指定”错误。当路径无效时会发生这种情况,例如"iis://localhost/asdfadsf" -
@Ian - 查看我的答案的更新。
-
@Ian - 我稍微调整了我的答案。
-
这应该是服务器故障吗?
标签: iis iis-6 mime-types metabase