12

在 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();
    }
}

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

如果可能的话,我宁愿不使用 WMI 或者必须生成一个实例appcmd

4

2 回答 2

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

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

于 2013-06-13T14:14:08.803 回答
0

确保您已打开“模拟”,并且您正在使用正确的管理员信息在 web.config 中分配模拟语句的用户和密码。这将缓解任何进一步的问题。

在 web.config 中添加此语句,如果它不是他们的已经。

<identity impersonate="true" userName="LOCALMACHINE\ADMINUSER" password="PASSWORD" />

还要确保在 IISManager 中您已将模拟打开“启用”并关闭匿名身份验证“禁用”。

于 2014-05-04T04:30:37.657 回答