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 驗證" -> 完成