3

ApplicationPools を反復して Recycle() を呼び出すだけでなく、さらに多くの作業が必要になるようです。シェル呼び出しに頼らずに (.Net から) プログラムで IISReset を最も厳密に模倣するにはどうすればよいですか?

そして、最も重要なことは、IISReset が行うことで、Microsoft.Web.Administration 名前空間で利用できるツールでは実現できないことはありますか?

4

1 に答える 1

1

次のサービスを開始または停止することにより、System.ServiceProcess.ServiceController (この回答からアイデアを得ました) を使用できます。

-Windows プロセス アクティベーション サービス (WAS)
-World Wide Web 発行サービス (W3SVC)

ここに仕事をするいくつかのコードがあります:

//stop iis (like running "IISReset /Stop")
ResetService("WAS", false);
ResetService("W3SVC", false);

//start iis (like running "IISReset /Start")
ResetService("WAS", true);
ResetService("W3SVC", true);

private static void ResetService(string name, bool start)
{
    using (var service = new System.ServiceProcess.ServiceController(name))
    {
        if (start && service.Status == ServiceControllerStatus.Stopped)
        {
            service.Start();
        }
        else if (!start && service.Status == ServiceControllerStatus.Running)
        {
            service.Stop();
        }
    }
 }

他の IISReset コマンドについては、タイムアウトを簡単にコーディングできます。また、コンピューターを再起動するには、この回答を確認してください。詳細が必要な場合はお知らせください。

しかし、それだけでは不十分な場合は、この手法を使用して、いつでも c# で Power Shell スクリプトを実行できます (ただやり遂げる必要がある場合は、非常にうまくいきます)。

于 2014-03-07T16:59:59.590 に答える