2012-01-30 5 views
3

ApplicationPoolsを反復処理してRecycle()を呼び出すだけでは不十分です。シェル呼び出しに頼らずに(.Netから)プログラムでIISResetを最もよく模倣するにはどうすればよいですか?Microsoft.Web.Administrationを使用する場合は、IISResetに相当するもの

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

答えて

1

あなたは次のサービスを起動または停止することによって、System.ServiceProcess.ServiceControllerを(このanswerからアイデアを得た)を使用することができます:

-Windowsプロセスアクティブ化サービス(WAS)
- 世界Wide Web発行サービスを( W3SVC)

は、ここではいくつかの仕事をやるのコードです:他のIISRESETコマンドについては

//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(); 
     } 
    } 
} 

、あなたは簡単に十分なタイムアウトのコードがあります。コンピュータを再起動するには、this answerをチェックしてください。詳細が必要な場合はお知らせください。

しかし、これで十分ではないのですが、this technique(とにかくやりたいことがあればかなりのバラです)を使って、いつでもC#でパワーシェルスクリプトを実行できます。

関連する問題