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

通过C#代码在远程计算机上启动和停止IIS,c#,iis,iisreset,C#,Iis,Iisreset,我需要停止远程计算机上的IIS,然后做一些工作,然后在工作完成后再次启动IIS服务。我正试图用C代码来实现这一点。我见过一些关于通过代码在远程机器上启动IIS的类似问题。但我一直未能从中得到任何有效的解决方案。一些关于如何执行启动和停止操作的清晰C代码将非常有用。解决方案A: 您可以创建.bat文件运行时,如下所示: # for stopping iisreset -stop # for starting iisreset -start 然后使用在远程计算机上执行它 解决方案B: 直接启动或

我需要停止远程计算机上的IIS,然后做一些工作,然后在工作完成后再次启动IIS服务。我正试图用C代码来实现这一点。我见过一些关于通过代码在远程机器上启动IIS的类似问题。但我一直未能从中得到任何有效的解决方案。一些关于如何执行启动和停止操作的清晰C代码将非常有用。

解决方案A:

您可以创建.bat文件运行时,如下所示:

# for stopping
iisreset -stop

# for starting
iisreset -start
然后使用在远程计算机上执行它

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


幸运吧;)

解决方案A:

您可以创建.bat文件运行时,如下所示:

# for stopping
iisreset -stop

# for starting
iisreset -start
然后使用在远程计算机上执行它

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


幸运吧;)

Microsoft.Web.Administration命名空间具有管理IIS所需的功能。请访问:

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

 ServiceController service = new ServiceController(serviceName);
 TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
 service.Start();
 service.WaitForStatus(ServiceControllerStatus.Running, timeout);
Service.Controller
class页面应该包含您需要的所有信息。在

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

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");

如果您在远程服务器上需要一组不同的权限,则需要做更多的工作。请参阅此问题。

Microsoft.Web.Administration命名空间具有管理IIS所需的功能。请访问:

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

 ServiceController service = new ServiceController(serviceName);
 TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
 service.Start();
 service.WaitForStatus(ServiceControllerStatus.Running, timeout);
Service.Controller
class页面应该包含您需要的所有信息。在

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

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");

如果您在远程服务器上需要一组不同的权限,则需要做更多的工作。看到这个问题,.

您尝试过什么吗?是的,有一个解决方案是使用以下命令启动命令提示符作为进程执行IISReset:IISReset\\RemoteServerMachineName/Stop您是否尝试用C#编写一些东西?还是只需要一个命令行工具?IISRESET将重置同一服务器上的IIS服务。您也可以执行iisreset[COMPUTERNAME]/restart从另一台计算机重新启动,但这可能需要更改防火墙。我不清楚你是在寻找我在下面给你的c#解决方案还是命令行/powershell脚本。Hi Mark c#代码会更好。但是你回答中的代码是在本地机器上启动服务的,对吗?我需要在远程机器上执行此操作。对此有什么建议吗?您尝试过什么吗?是的,有一个解决方案,关于启动命令提示符作为使用此命令执行IISReset的进程:IISReset\\RemoteServerMachineName/Stop您是否尝试用C#编写一些东西?还是只需要一个命令行工具?IISRESET将重置同一服务器上的IIS服务。您也可以执行iisreset[COMPUTERNAME]/restart从另一台计算机重新启动,但这可能需要更改防火墙。我不清楚你是在寻找我在下面给你的c#解决方案还是命令行/powershell脚本。Hi Mark c#代码会更好。但是你回答中的代码是在本地机器上启动服务的,对吗?我需要在远程机器上执行此操作。有什么建议吗?嗨,马克C代码会更好。但是上面的代码是在本地机器上启动服务的,对吗?我需要在远程机器上执行此操作。对此有什么建议吗?我刚刚用调用另一台服务器上的ServiceController所需的代码编辑了我的示例。当然,您必须确保您使用的帐户在目标服务器上具有所需的权限。我想我没有这样做的权限。我收到“无法在计算机上打开iisadmin服务”异常。如果我确实拥有有权启动和停止IIS服务的用户帐户的凭据,该怎么办。如何在代码中指定这些凭据?您知道如何在代码中为此标记指定用户帐户凭据吗?使用权限,事情会变得复杂得多。有关更多信息,请参阅此答案。Hi Mark C#代码会更好。但是上面的代码是在本地机器上启动服务的,对吗?我需要在远程机器上执行此操作。对此有什么建议吗?我刚刚用调用另一台服务器上的ServiceController所需的代码编辑了我的示例。当然,您必须确保您使用的帐户在目标服务器上具有所需的权限。我想我没有这样做的权限。我收到“无法在计算机上打开iisadmin服务”异常。如果我确实拥有有权启动和停止IIS服务的用户帐户的凭据,该怎么办。如何在代码中指定这些凭据?您知道如何在代码中为此标记指定用户帐户凭据吗?使用权限,事情会变得复杂得多。有关更多信息,请参阅此答案