ASP.NET C# 開啟 / 停止 Windows Service

 
ASP.NET C# 開啟 / 停止 Windows Service
 

   Web.config
 
   ……
   <identity impersonate="true" />
   ……
 

 

   WebForm8.aspx
 
   <asp:Label ID="Label1" runat="server" Text="" /><br />
   <asp:Button ID="StartBtn" runat="server" onclick="Start_Click" Text="Start Service" />
   <asp:Button ID="StopBtn" runat="server" onclick="Stop_Click" Text="Stop Service" />
 

 

   WebForm8.aspx.cs
 
   using System;
   using System.ServiceProcess;
   using System.Security.Principal;
 
   namespace WebApplication9
   {
      public partial class WebForm8 : System.Web.UI.Page
      {
         protected void Page_Load(object sender, EventArgs e)
         {
            System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController("Apache2.2");
            Label1.Text = service.Status.ToString();
         }
 
         protected void Start_Click(object sender, EventArgs e)
         {
            System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController("Apache2.2");
 
            if(service.Status == ServiceControllerStatus.Stopped) StartService("Apache2.2", 20000);
 
            service.Dispose();
         }
 
         protected void Stop_Click(object sender, EventArgs e)
         {
            System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController("Apache2.2");
 
            if (service.Status == ServiceControllerStatus.Running) StopService("Apache2.2", 20000);
 
            service.Dispose();
         }
 
         private void StartService(string serviceName, int timeout)
         {
            System.ServiceProcess.ServiceController service =
            new System.ServiceProcess.ServiceController(serviceName);
 
            try
            {
               TimeSpan tout = TimeSpan.FromMilliseconds(timeout);
 
               service.Start();
               service.WaitForStatus
               (System.ServiceProcess.ServiceControllerStatus.Running, tout);
 
               Label1.Text = service.Status.ToString();
            }
            catch(Exception Ex)
            {
               Response.Write("Error : " + Ex.Message);
            }
 
            service.Dispose();
         }
 
         private void StopService(string serviceName, int timeout)
         {
            System.ServiceProcess.ServiceController service =
            new System.ServiceProcess.ServiceController(serviceName);
 
            try
            {
               TimeSpan tout = TimeSpan.FromMilliseconds(timeout);
 
               service.Stop();
               service.WaitForStatus
               (System.ServiceProcess.ServiceControllerStatus.Stopped, tout);
 
               Label1.Text = service.Status.ToString();
            }
            catch (Exception Ex)
            {
               Response.Write("Error : " + Ex.Message);
            }
 
            service.Dispose();
         }
      }
   }
 

 
註 : IIS Version 5.1 設定
"目錄安全設定" -> "匿名存取及驗證控制" -> "編輯" -> Tick 左 "匿名存取" ->
使用者名稱 "<Host Name>\IWAM_<Host Name>" -> Tick 左 "允許 IIS 來控制密碼" ->
Tick 左 驗證的存取 "整合式 Windows 驗證" -> 完成