IIS Metabase是否以Id升序返回网站?

时间:2014-07-17 10:31:29

标签: c# iis directoryentry iis-metabase

我不确定我面对的问题是否充分有意义,所以让我试着详细说明。目前,我尝试通过创建新的DirectoryEntry检查IIS中是否已存在网站:

DirectoryEntry IISWebsites = new DirectoryEntry(MetaBasePath); 

MetaBasePath早先定义为:

private const string MetaBasePath = "IIS://Localhost/W3SVC";

我在foreach循环中检查IISWebsites子项,只是想知道这是否会以Id顺序运行子进程?根据我的阅读,这实际上存储在DirectoryEntry'Name'属性中。

我问的原因是,如果找不到用户在我的网页设置项目中输入的网站名称,那么我想返回最高的ID,这样我就可以添加1并创建一个名称提供的新网站由用户。

用我的IIS测试了这个,它确实按照这个顺序返回它,但我需要确定。

修改

我在Microsoft支持(http://support.microsoft.com/kb/240941)上发现了以下内容:

  

请注意,在搜索元数据库以获取配置信息时,   它从底部或子键,顶部或节点枚举。

这似乎意味着它确实按照我的想法行事,但如果它在网站ID上运行则不是100%清楚,因为我不确定这与子密钥有什么关系。

1 个答案:

答案 0 :(得分:0)

文档没有明确地按照站点ID定义顺序,因此假设它总是以这种方式排序是不安全的(特别是当您的当前应用程序最终用于新版本的.NET / Windows / IIS时)未来)。

很可能网站的数量不会太大,以至于列举它们以发现最大不会成为瓶颈。

即便如此,您仍可以搜索网站并使用DirectorySearcher.Sort指定订单。

请注意,关于编辑以及枚举配置信息的方式,与排序顺序无关。脱离背景的一句话并不清楚。在整个段落的上下文中读取它,很明显枚举行为与配置数据库属性继承有关。