IIS7 サーバーで実行されているすべてのアプリケーション プールを取得しようとしています。これらをグリッドに表示し、ユーザーがそれらを開始、停止、またはリサイクルできるようにしたいと考えています。これは IIS6 では DirectoryENTry を使用してうまく機能しますが、IIS7 では機能しません。4 台または 5 台のサーバーを通過し、すべてのアプリケーション プールを取得する必要があります。これが私のコードです:
using (SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString))
{
myConnection.Open();
SqlCommand cmd = new SqlCommand("SELECT ServerIP FROM Servers WHERE AppPoolIIS7='Y' AND Domain='LAN'", myConnection);
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
while (rdr.Read())
{
string serverIP = rdr["ServerIP"].ToString();
ServerManager sm = new ServerManager(serverIP);
ApplicationPoolCollection appPoolColl = sm.ApplicationPools;
foreach (ApplicationPool appPool in appPoolColl)
{
}
}
}
else
{
}
}
コードをステップ実行すると、最初のサーバーがデータベースから正常に取得されますが、serverIP をサーバー マネージャーに渡そうとすると、次のエラーが発生します。
ファイル名: \?\10.0.22.22 エラー: 構成ファイルを読み込めません
IP に \?\ が追加されるのはなぜですか?
編集:コードにいくつかの変更を加えましたが、別のエラーが発生しています。
ServerManager sm = ServerManager.OpenRemote(serverIP);
これが私が受け取っているエラーです:
次のエラーのため、CLSID {2B72133B-3F5B-4602-8952-803546CE3344} を持つリモート コンポーネントの COM クラス ファクトリをマシンから取得できませんでした: 800706ba