如何正确使用Microsoft.Web.Administration从网页启动应用程序池?

时间:2017-03-08 16:23:59

标签: c# asp.net iis-7.5

我的任务是找到一种从网页重启应用程序池的方法。 IIS由我们自己的IT部门托管,因此必要时将更改所需的任何安全设置。

我正在使用Microsoft.Web.Administration.dll并尝试将其用于本地IIS(7.5):

            ServerManager serverManager = new ServerManager();
            ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;
            foreach (ApplicationPool applicationPool in applicationPoolCollection)
            {
                appPoolNames.Add(applicationPool.Name);
                // If the applicationPool is stopped, restart it.
                if (applicationPool.State == ObjectState.Stopped)
                {
                    applicationPool.Start();
                }
            }

            // CommitChanges to persist the changes to the ApplicationHost.config.
            serverManager.CommitChanges();

如果我将此逻辑放在winform中并以本地管理员身份运行,则将启动本地IIS中的应用程序池。但是,如果我在网页中放入相同的逻辑,则会在此行失败并显示错误:

if (applicationPool.State == ObjectState.Stopped)
Exception: System.ComponentModel.Win32Exception: Access is denied

我认为这是出于安全考虑,但我已经将本地管理员用户提供给了我的应用池。有没有办法在网页中实现这一目标?

1 个答案:

答案 0 :(得分:0)

我认为网页与您尝试重新启动的网页不在同一个应用程序池中,这不是一个好主意(因为网页会突然失去其进程主机)。因此,假设它是一个不同的应用程序池,那么重要的是网页的应用程序池的标识 - 这需要具有重新启动目标应用程序池的权限。

相关问题