是否有托管API来管理IIS 8?

Sea*_*rey 12 c# .net-4.5 iis-8

在IIS7中,您曾经能够使用Microsoft.Web.Administrationdll来管理IIS.

我已将此引用添加到我的项目中,但运行以下代码会导致NotImplementedExceptionat site.Stop():

using (var server = new ServerManager())
{
    var site = server.Sites.FirstOrDefault(s => s.Name == instanceName);
    if (site != null)
    {
        site.Stop();
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有此API的更新版本或从.Net管理IIS的备用方法?

我宁愿不使用WMI,也不想appcmd在可能的情况下生成if 的实例.

Mav*_*rik 4

我刚刚在 IIS 8 和 7 上测试了以下代码片段(分别使用来自 Windows 8 的 GAC 的 7.9.0.0 和来自 nuget 的 7.0.0.0 对于 2008 R2 机器)

我可以毫无问题地停止该网站:

var manager = new ServerManager();
manager.Sites[0].Stop();
manager.Dispose();
Run Code Online (Sandbox Code Playgroud)

我唯一需要特别做的就是以管理员身份显式运行 Linqpad 才能使其正常工作。也许这就是你的问题?Windows 8 / Server 2012 不会自动为您提供管理员访问权限,除非您的应用程序清单强制要求。我相信这也适用于 7 / 2008 R2,但无关紧要,因为您已明确标记为 IIS8(UAC ftw!)