Ian*_*oyd 6 iis iis-6 metabase mime-types
我正在尝试获取IIS服务器已知的mime类型列表(您可以看到2年前我被问及并回答过).复制粘贴的答案包括:
GetObject("IIS://LocalHost/MimeMap") MSDN
GetObject("IIS://localhost/mimemap") KB246068
GetObject("IIS://localhost/MimeMap") Scott Hanselman的博客
new DirectoryEntry("IIS://Localhost/MimeMap")) 堆栈溢出
new DirectoryEntry("IIS://Localhost/MimeMap")) 堆栈溢出
New DirectoryServices.DirectoryEntry("IIS://localhost/MimeMap") 速度评论
你明白了.每个人都同意你使用一个神奇的路径iis:// localhost/mimemap.这种方法效果很好,除非它没有.
唯一的线索我可以找到它失败的原因,来自IIS MVP,Chris Crowe,博客:
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);
Run Code Online (Sandbox Code Playgroud)
这里有两条线索:
iis://localhost/mimemap在配置数据库路径.这对我来说听起来像是" 元数据库 "的某种" 路径 ".现在我和整个星球正在硬编码" MetabasePath "
iis://localhost/MimeMap
Run Code Online (Sandbox Code Playgroud)
它到底应该是什么?代码应该如何构建有效的MetabasePath?
注意:我没有收到访问被拒绝错误,当你有一个无效的MetabasePath时错误是相同的,例如 iis://localhost/SoTiredOfThis
如果您正在使用本地计算机的IIS配置,即您的代码和IIS位于同一个框中,则只需指定:
IIS://Localhost/mimemap
这IIS:部分在OLE用语中也称为名字对象.
如果您打开IIS6配置数据库文件(C:\Windows\System32\inetsrv\metabase.xml),您将找到一个大的"blob"XML.这实际上是一个扁平的树形结构.
元数据库中的路径由Location属性表示.
名字IIS://localhost映射到实际上是树根的Location路径/LM.
名字IIS://localhost/MimeMap映射到Location路径/LM/MimeMap.
如果您的代码正在访问远程计算机上的元数据库,则可以指定IIS://localhost/[path],而不是指定IIS://[RemoteMachineName]/[path].这就是克里斯克劳斯的评论意味着什么.
IIS://localhost/MimeMap也是主Mime类型列表.所有站点都继承此列表(IIS Metabase严重依赖于继承的属性).
如果您想覆盖特定站点的Mime类型,那么您将修改:
IIS://localhost/W3SVC/[iisnumber]/ROOT/MimeMap
打开IIS元数据库文件并深入了解发动机罩下发生的情况是很有用的.
更新:
要回答有关为什么可以创建DirectoryEntry路径无效的对象的问题,DirectoryEntry是一个通用的包装器对象,用于绑定不同类型的ADSI提供程序,如IIS,LDAP和WinNT.它允许创建DirectoryEntry对象,其中可能不一定在指定的路径上有匹配的对象.某些ADSI提供商操作可能需要此功能.
DirectoryEntry调用时有一个静态方法Exists可用于测试对象的存在.例如:
// Does Default Website exist?
if(DirectoryEntry.Exists("IIS://localhost/w3svc/1"))
{
// Do work...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18227 次 |
| 最近记录: |