我使用Visual Studio创建了一个C# Web服务,用于停止名为SMTPSVC的Windows服务“简单邮件传输协议(SMTP)”。
以下是执行此操作的Web方法:
以下是执行此操作的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服务器中发布了这个网络服务。当我调用服务时,它会抛出以下“访问被拒绝”异常。
<?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服务?
非常感谢您的帮助。
提前感谢, Yogi