【问题标题】:Start and Stop IIS on remote machine through C# code [closed]通过 C# 代码在远程机器上启动和停止 IIS [关闭]
【发布时间】:2013-07-24 10:32:40
【问题描述】:

我需要在远程机器上停止 IIS,然后做一些工作,然后在工作完成后再次启动 IIS 服务。我正在尝试使用 C# 代码来做到这一点。我已经看到一些关于通过代码在远程机器上启动 IIS 的类似问题。但我无法从中得到任何可行的解决方案。一些关于如何进行启动和停止操作的清晰 C# 代码会很有帮助。

【问题讨论】:

  • 你有什么尝试吗?
  • 是的,有这个解决方案关于启动命令提示符作为使用此命令执行 IISReset 的进程:IISRESET \\RemoteServerMachineName /stop
  • 你想用 C# 写东西吗?或者你只是想要一个命令行工具? IISRESET 将重置同一服务器上的 IIS 服务。您也可以执行 iisreset [COMPUTERNAME] /restart 从另一台计算机重新启动,但这可能需要更改防火墙。我不清楚你是在寻找我在下面给你的 c# 解决方案还是命令行/powershell 脚本。
  • Hi Mark C# 代码会更好。但是您答案中的代码是用于在本地机器上启动服务,对吗?我需要在远程机器上执行此操作。对此有何建议?

标签: c# iis iisreset


【解决方案1】:

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

【讨论】:

  • Hi Mark C# 代码会更好。但是上面的代码是为了在本地机器上启动服务,对吧?我需要在远程机器上执行此操作。对此有何建议?
  • 我刚刚编辑了我的示例,其中包含在另一台服务器上调用 ServiceController 所需的代码。当然,您必须确保您使用的帐户在目标服务器上具有所需的权限。
  • 我想我没有权限这样做。我收到“无法在计算机上打开 iisadmin 服务”异常。如果我确实拥有有权启动和停止 IIS 服务的用户帐户的凭据,该怎么办。如何在代码中指定这些凭据?
  • 您对如何在此标记的代码中指定用户帐户凭据有任何想法吗?
  • 有了权限,事情就变得复杂多了。有关更多信息,请参阅此答案stackoverflow.com/questions/8581931/…
【解决方案2】:

解决方案 A:

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

# for stopping
iisreset -stop

# for starting
iisreset -start

然后使用PsExec在远程机器上执行。

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

祝你好运;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多