【问题标题】:Stopping and Starting IIS in C#在 C# 中停止和启动 IIS
【发布时间】:2017-12-12 01:01:54
【问题描述】:

我需要能够在 C# 中启动/停止 IIS。我的经理要求我创建这个模块。以下是我的尝试:

ServiceController service = new ServiceController("w3svc");
service.Stop();

我收到以下异常:

无法在计算机“.”上打开 w3svc 服务。

我正在编写代码来停止本地机器上的 IIS。

我也尝试将IISAdmin 作为服务名称,但在我的计算机上找不到IISAdmin。

【问题讨论】:

  • 您可以从 C# 运行 powershell 命令来告诉服务停止或启动
  • 是的,但会抛出一个弹出窗口,要求授予 IIS 命令提示符访问权限。我想知道这种方法是否可以避免这种情况。我也觉得如果不用powershell命令也能做到,会显得更干净。
  • 您确实需要拥有管理员权限才能使用 iis,无论尝试如何与之交互。以管理员身份运行您的应用程序并使用appcmd 或iisreset 命令可能会更容易。
  • 如果您正在寻找 IIS 7。可以查看此链接! stackoverflow.com/a/4959268/4106634

标签: c# iis iis-7


【解决方案1】:

您必须使用 Microsoft.Web.Administration 。

Microsoft.Web.Administration (MWA) API 构建为托管 应用程序主机管理 API (AHADMIN) 上的代码包装器 这是一个本机代码接口库。它提供了一个程序化的 访问和更新 Web 服务器配置的方法和 管理信息。

using System;
using System.Linq;
using Microsoft.Web.Administration;

class Program
{
    static void Main(string[] args)
    {
        var server = new ServerManager();
        var site = server.Sites.FirstOrDefault(s => s.Name == "Default Web Site");
        if (site != null)
        {
            //stop the site
            site.Stop();
            //start the site
            site.Start();
        }

    }
}

This 文章讨论了使用 Microsoft.Web.Administration 的详细方案。

请注意,您必须以管理员身份运行您的 C# 应用程序才能在 IIS 上执行任何操作。否则您可能会被拒绝访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    相关资源
    最近更新 更多