5

プログラムで IIS からサイトのステータスを取得して、サイトが停止しているかどうかを確認しようとしていますが、次のエラーが発生し続けました。

オブジェクト ID が有効なオブジェクトを表していません。(HRESULT からの例外: 0x800710D8)

アプリケーションは、ServerManager Site クラスを使用してサイト ステータスにアクセスしています。ここにコードがあります、

//This is fine, gets back the site 
var serverManager = new Microsoft.Web.Administration.ServerManager(ConfigPath);
var site = serverManager.Sites.FirstOrDefault(x => x.Id == 5);
if (site == null) return;
var appPoolName = site.Applications["/"].ApplicationPoolName;
//error!
var state = site.State;

静的サイトでテストして問題を切り分け、サイトが稼働していること、すべての構成が有効であること、有効なアプリケーション プールを指していることなどを確認しました。

詳細が必要な場合はお知らせください。それはCOMのものですか?

4

2 に答える 2

7

私は問題がどこにあるかを理解しました。基本的に、サーバーマネージャーには2つの部分があります。サーバーマネージャーの最初の部分では、構成ファイルからサイトの詳細を読み取ることができます。これは、上記で行ったことです。それに関する問題は、ファイルにある情報しか取得できず、サイトの状態はその一部ではないということです。

サーバーマネージャーの2番目の部分では、IISに直接接続できます。これは、COM要素と対話することによって行われます。だから私がすべきことはこれです:

ServerManager manager= ServerManager.OpenRemote("testserver");
var site = manager.Sites.First();
var status = site.State.ToString() ;
于 2012-12-12T23:49:24.167 に答える