サーバーの IIS サイトとアプリケーションを列挙する内部ツールがあります。次のようなコードを使用します。
using (var serverManager = ServerManager.OpenRemote(serverName))
{
var site = serverManager.Sites[siteName]; // This is slow
// And just starting to enumerate Applications is incredibly slow
foreach (var application in site.Applications)
{
// ...
}
}
私が抱えている問題は、Sites
コレクションにアクセスすると、VPN 経由でサーバーに接続するときに応答時間が非常に遅いことです。サイトのアプリケーションへのアクセスはさらに遅くなります。私の理論では、速度が遅いのは、サイトのメタデータのセット全体がネットワーク経由で送信される可能性が高いという事実によるものです。ただし、サイト データのサブセットのみが必要です。
私の理論では、コードを WMI クエリを使用するように切り替えれば、このアプリケーションに関連する特定のフィールド ( などSELECT Name from Site
) のみをクエリできるようになります。Site
残念ながら、WMI CIM Studio で WMI オブジェクトを探索しようとすると、ローカルの IIS 7.5 の場合でも、やオブジェクトなど、存在するはずのオブジェクトがまったくありませんでしたApplication
。root\WebAdministration
名前空間に使用しています。
この WMI は IIS 7.5 で機能しますか? 「IIS 6 WMI 互換性」がオンになっていることを確認しました。IIS インスタンスのメタデータを照会する別の軽量な方法はありますか?