我使用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