启动停止 IIS 应用程序池

Posted

技术标签:

【中文标题】启动停止 IIS 应用程序池【英文标题】:Start Stop IIS Application Pool 【发布时间】:2018-09-15 01:45:30 【问题描述】:

我找到了这段代码:

using System.DirectoryServices;

...

void Recycle(string appPool)

    string appPoolPath = "IIS://servername/W3SVC/AppPools/" + appPool;

    using (DirectoryEntry appPoolEntry = new DirectoryEntry(appPoolPath))
    
        appPoolEntry.Invoke("Recycle", null);
        appPoolEntry.Close();
    

但是当我尝试使用这段代码时,我遇到了这个错误:

调用的目标已抛出异常。StackTrace: at System.DirectoryServices.DirectoryEntry.Invoke(String methodName, Object[] args)

我做错了什么? 或者如何获取有关我的应用程序池状态的信息,以及如何在没有任何特殊权限的情况下启动和停止我的应用程序池?

我正在使用内置帐户:NetworkService

【问题讨论】:

请提供完整的堆栈跟踪。 这就是我在日志中看到的全部内容:(我认为这是因为我没有一些指定的权限。 【参考方案1】:

尝试使用 Microsoft.Web.Administration.ServerManager 和 Microsoft.Web.Administration.ApplicationPool 类。

例子:

var serverManager = new ServerManager();
var appPool = serverManager.ApplicationPools.FirstOrDefault(ap => ap.Name.Equals("AppPoolName"));
appPool.Start();

【讨论】:

我有“权限不足”,我需要什么权限?以及如何添加它? 消息:文件名:redirection.config 错误:由于权限不足,无法读取配置文件,StackTrace:在 Microsoft.Web.Administration.Interop.AppHostWritableAdminManager.GetAdminSection(String bstrSectionName, String bstrSectionPath) 在 [. ..]Microsoft.Web.Administration.Lazy.Initialize[T](T& target, CreateInstanceDelegate`1 valueFactory) 的 Microsoft.Web.Administration.ServerManager.ApplicationPoolCollectionCreator() 在 Microsoft.Web.Administration.ServerManager.get_ApplicationPools()跨度> 请尝试this解决方案。 虽然建议MWA是正确的方式,但您也应该指出,这需要管理员权限,而NetworkService不合格。

以上是关于启动停止 IIS 应用程序池的主要内容,如果未能解决你的问题,请参考以下文章

IIS 应用程序池 - 停止/启动与回收

IIS6.0 IIS7.5应用程序池自动停止怎么办

windows 7 sp1 版本下的IIS应用程序池总是自动停止?

如何在 IIS 7.5 中配置应用程序池在停止时自动重新启动?

如何在 IIS 8 中远程停止/启动应用程序池

iis的应用程序池为啥会自动停止