gpt4 book ai didi

IIS:如何获取元数据库路径?

转载 作者:行者123 更新时间:2023-12-04 15:04:52 25 4
gpt4 key购买 nike

我正在尝试获取 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

    最佳答案

    如果您正在使用本地计算机的 IIS 配置,即您的代码和 IIS 在同一个框中,那么指定以下内容就足够了:
    IIS://Localhost/mimemapIIS:部分在 OLE 用语中也称为绰号。

    如果您打开 IIS6 元数据库文件 (C:\Windows\System32\inetsrv\metabase.xml),您会发现一个很大的 XML 'blob'。这实际上是一个扁平的树结构。

    元数据库中的路径由 Location 表示属性。

    绰号 IIS://localhost映射到 Location路径 /LM这实际上是树根。

    绰号 IIS://localhost/MimeMap映射到 Location路径 /LM/MimeMap .

    如果您的代码正在访问远程机器上的元数据库,那么不要指定 IIS://localhost/[path] , 可以指定 IIS://[RemoteMachineName]/[path] .这就是克里斯克劳斯评论的意思。
    IIS://localhost/MimeMap也是主要的 Mime 类型列表。所有站点都继承此列表(IIS 元数据库严重依赖继承的属性)。

    如果您想覆盖特定站点的 Mime 类型,则可以修改:
    IIS://localhost/W3SVC/[iisnumber]/ROOT/MimeMap
    打开 IIS 元数据库文件并四处挖掘以了解引擎盖下发生了什么是很有用的。

    更新:

    回答您关于为什么可以创建 DirectoryEntry 的问题路径无效的对象,DirectoryEntry是一个通用包装对象,用于绑定(bind)不同类型的 ADSI 提供程序,例如 IIS、LDAP 和 WinNT。它允许创建 DirectoryEntry指定路径中不一定有匹配对象的对象。某些 ADSI 提供程序操作可能需要此功能。
    DirectoryEntry上有一个静态方法调用 Exists 您可以使用它来测试对象是否存在。例如:

    // Does Default Website exist?
    if(DirectoryEntry.Exists("IIS://localhost/w3svc/1"))
    {
    // Do work...
    }

    关于IIS:如何获取元数据库路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2716563/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com