通过C#代码在远程计算机上启动和停止IIS

时间:2013-07-24 10:32:41

标签: c# iis iisreset

我需要在远程计算机上停止IIS,然后执行一些工作,然后在完成工作后再次启动IIS服务。我试图使用C#代码执行此操作。我已经看到一些关于通过代码在远程机器上启动IIS的类似问题。但我无法从中获得任何有效的解决方案。关于如何进行启动和停止操作的一些明确的C#代码将非常有用。

2 个答案:

答案 0 :(得分:4)

Microsoft.Web.Administration命名空间具有管理IIS所需的功能。请查看:http://msdn.microsoft.com/en-us/library/microsoft.web.administration%28VS.90%29.aspx

但是,如果您只想停止并启动服务,则可以使用Service.Controller

管理您的服务
 ServiceController service = new ServiceController(serviceName);
 TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
 service.Start();
 service.WaitForStatus(ServiceControllerStatus.Running, timeout);

Service.Controller课程页面应包含您需要的所有信息。在http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx

找到它

以下是您可以用来启动服务的完整示例:

public static void StartService(string serviceName, int timeoutMilliseconds)
{
  ServiceController service = new ServiceController(serviceName);
  try
  {
    TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

    service.Start();
    service.WaitForStatus(ServiceControllerStatus.Running, timeout);
  }
  catch
  {
    // ...
  }
}

查看上面的链接以获取更多文档。

您可以按如下方式连接到远程服务器:

ServiceController svc =  new ServiceController("Service", "COMPUTERNAME");

如果您在远程服务器上需要不同的权限集,则需要完成更多工作。请参阅此问题Starting remote Windows services with ServiceController and impersonation

答案 1 :(得分:0)

解决方案A:

您可以创建一个.bat文件运行时,如:

# for stopping
iisreset -stop

# for starting
iisreset -start

然后使用PsExec在远程计算机上执行它。

解决方案B: 直接启动或停止“IISADMIN”服务。要管理远程服务,您可以使用以下链接:

幸运;)