1

私の質問が一見完全に理にかなっているのかどうかわからないので、詳しく説明してみましょう。現時点では、新しい DirectoryEntry を作成して、IIS に Web サイトが既に存在するかどうかを確認しようとしています。

DirectoryEntry IISWebsites = new DirectoryEntry(MetaBasePath); 

MetaBasePath は以前に次のように定義されています。

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

foreach ループで IISWebsites の子をチェックしましたが、これが子を Id 順に実行するかどうか疑問に思いました。私が読んだことから、これは実際には DirectoryEntry 'Name' プロパティに格納されています。

私が尋ねる理由は、Web セットアップ プロジェクトでユーザーが入力した Web サイト名が見つからない場合、最高の ID を返したいので、それに 1 を追加して、ユーザーが指定した名前で新しい Web サイトを作成できるようにするためです。 .

IIS でこれをテストしたところ、この順序で返されるようですが、確認する必要があります。

編集

Microsoft サポート ( http://support.microsoft.com/kb/240941 )で次の情報を見つけました。

構成情報を求めてメタベースを検索する場合は、下位 (サブキー) から上位 (ノード) に列挙されることに注意してください。

これは、私が考えていることを暗示しているようですが、これがサブキーとどのように関係しているかわからないため、サイト ID で機能するかどうかは 100% 明らかではありません。

4

1 に答える 1

0

ドキュメントでは、サイト ID による順序を具体的に定義していないため、常にそのように並べ替えられると想定するのは安全ではありません (特に、現在のアプリケーションが最終的に新しいバージョンの .NET/Windows/IIS で使用されるようになるため)。 .

ほとんどの場合、ウェブサイトの数は、それらを列挙して最大数を見つけることがボトルネックにならないほど大きくはなりません。

それでも、Web サイトの検索を実行し、 を使用して順序を指定できますDirectorySearcher.Sort

編集と構成情報の列挙方法に関しては、並べ替え順序とは関係ないことに注意してください。文脈から切り離された一文は、それほど明確ではありません。段落全体の文脈で読むと、列挙の動作がメタベース プロパティの継承に関連していることは明らかです。

于 2014-07-17T10:50:37.677 に答える