我不确定我面对的问题是否充分有意义,所以让我试着详细说明。目前,我尝试通过创建新的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%清楚,因为我不确定这与子密钥有什么关系。
答案 0 :(得分:0)
文档没有明确地按照站点ID定义顺序,因此假设它总是以这种方式排序是不安全的(特别是当您的当前应用程序最终用于新版本的.NET / Windows / IIS时)未来)。
很可能网站的数量不会太大,以至于列举它们以发现最大不会成为瓶颈。
即便如此,您仍可以搜索网站并使用DirectorySearcher.Sort
指定订单。
请注意,关于编辑以及枚举配置信息的方式,与排序顺序无关。脱离背景的一句话并不清楚。在整个段落的上下文中读取它,很明显枚举行为与配置数据库属性继承有关。