在 IIS7 中,您曾经可以使用 Microsoft.Web.Administration
dll 来管理 IIS。
我已将此引用添加到我的项目中,但是运行以下代码会在 site.Stop()
处导致 NotImplementedException
:
using (var server = new ServerManager())
{
var site = server.Sites.FirstOrDefault(s => s.Name == instanceName);
if (site != null)
{
site.Stop();
}
}
是否有此 API 的更新版本或从 .Net 管理 IIS 的替代方法?
如果可能的话,我宁愿不使用 WMI 或必须生成 appcmd
的实例。
最佳答案
我刚刚在 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 不会自动为您提供管理员访问权限,除非您的应用程序 list 强制要求。我相信这也适用于 7/2008 R2 但无关紧要,因为您已明确标记为 IIS8(UAC ftw!)
关于c# - 是否有管理 IIS 8 的托管 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17086640/