2

ServerManagerアプリ サイトとアプリ プールをリモートで管理するために使用しています。ただし、実際のアプリケーションのステータスを制御または照会する方法はありません。

IIS マネージャーのコンテキスト メニュー

アプリプールのコードがあります

public string StopAppPool(string poolName)
{
        using (var iis = ServerManager.OpenRemote(this._server))
        {
            return iis.ApplicationPools.First(ap => ap.Name == poolName).Stop().ToString();
        }
}

そしてサイト用

public string StartSite(string site)
{
        using(var iis = ServerManager.OpenRemote(this._server))
        {
            return iis.Sites.First(s => s.Name == site).Start().ToString();
        }
}

しかし、アプリケーション レベルにはこれらのメソッドがまったくありません。

public string StartApp(string site,string path)
{
        using (var iis = ServerManager.OpenRemote(this._server))
        {
            iis.Sites[0].Applications[0]. // not here =(
        }
}
4

1 に答える 1

0

以下をお読みになることをお勧めします: http://www.iis.net/configreference/system.applicationhost/applicationpools

「アプリケーション」は、Web の仕組みにより、リクエストがアクティブな間だけ実行されます。そのため、実行時間の長いスレッドがない限り、そのスレッドは現在リクエストを処理しているためのみアクティブになります。これを確認する必要がある場合は、WMI 機能の一部を使用して、アクティブな要求の数を取得できます。ただし、特定のアプリケーションが現在リクエストを処理していないからといって、それを実行できないわけではありません。

基本的に、要求は IIS 自体の内部で受信および開始されます。次に、IIS は要求のハンドラーを検索し、それを正しいサイト/アプリケーション プールに渡します。統合モードとクラシック モードのどちらを使用しているかによって微妙な違いがありますが、質問に関しては問題ありません。

オフになっている場合、またはアプリケーション プールがオフになっている場合、サイトは非アクティブである可能性があります。そのレベルの粒度が提供されるため、複数のサイト間でアプリ プールを共有し、一部のサイトをオンにして他のサイトをオフにしたり、アプリ プール内のすべてのサイトを一度にオフにしたりできます。

特定のサイト内では、サイトが有効になっている限り、アプリケーション自体は常に有効になっているため、サイト全体がオンまたはオフになっているというコンテキストの外で、その特定のアプリケーションがオンまたはオフになっているかどうかを制御する方法はありません。

特定のアプリケーションをシャットダウンする必要がある場合は、それらを異なるサイトに分割し、そのレベルで制御する必要があります。

于 2012-12-27T16:33:54.460 に答える