我使用visual studio創建了一個C#Web服務來停止稱爲SMTPSVC的Windows服務「簡單郵件傳輸協議(SMTP)」。嘗試停止C#Windows服務時訪問被拒絕
以下是Web方法來做到這一點:
[WebMethod]
public string StopService()
{
String status = "";
try
{
ServiceController scAlerter = new ServiceController("SMTPSVC");
Console.WriteLine(scAlerter.DisplayName);
Console.WriteLine(scAlerter.CanStop);
scAlerter.Stop();
Console.WriteLine("Service stopped");
status = "STOPPED";
}
catch (Exception e)
{
Console.WriteLine("Exception caught here" + e.ToString());
status = "Exception" + e.ToString();
}
return status;
}
我在IIS 5.1服務器發佈此Web服務。當我調用它拋出以下「拒絕訪問」的服務異常
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://y-square.org/">
ExceptionSystem.InvalidOperationException: Cannot open SMTPSVC service on
computer '.'. ---> System.ComponentModel.Win32Exception: Access is denied
--- End of inner exception stack trace --- at
System.ServiceProcess.ServiceController.GetServiceHandle(Int32 desiredAccess)
at System.ServiceProcess.ServiceController.Stop() at Service.RestartService()
in c:\Inetpub\wwwroot\RestartService\App_Code\Service.cs:line 38
</string>
默認情況下,該服務使用的用戶帳戶IUSER_system-name
進入系統管理員組我已經加入該用戶帳戶,並添加ASPNET
用戶帳戶管理員組。
我能夠成功停止/從C#獨立程序啓動此Windows服務。
您能否讓我知道是什麼問題?我需要更改任何權限設置或IIS用戶訪問權限才能運行此權限?
也讓我知道這個C#服務將用於停止Windows服務的用戶帳戶?
非常感謝您的幫助。
由於提前, 瑜珈
謝謝, 我曾嘗試加入IUSER帳戶進入系統中使用控制面板/用戶管理員組帳戶應用程序,但我仍然得到同樣的例外。我需要在IIS服務器上進行任何其他配置嗎?像虛擬目錄屬性等 – Yogi
@Yogi。我忙於工作,無法訪問Windows機器來檢查內容。我仍然認爲這是一個問題許可和/或安全策略設置。出於診斷目的,臨時使IIS使用將代碼作爲獨立應用運行以代替IUSER帳戶時使用的帳戶,並查看是否可行。您也可以將此問題指向http://serverfault.com QA站點,因爲系統管理員可以更好地幫助確定似乎是配置問題而不是代碼問題。 – mjv
@mfv:今天開始工作,因爲我的系統重新啓動後,IUSR帳戶添加到管理員組。 非常感謝您的幫助 乾杯, Yogi – Yogi