试图在c#中打开/关闭iis网站

时间:2012-07-02 00:24:00

标签: c# iis iis-7

我正在寻找停止/启动IIS网站的c#.Net应用程序(网络或桌面)。

我在互联网上搜索这个,我找不到一个有用的例子或解释。

我找到了这个dll http://msdn.microsoft.com/en-us/library/microsoft.web.administration.servermanager%28v=VS.90%29.aspx

这是我尝试停止/启动IIS网站的示例:

“使用Microsoft.Web.Administration”参考..

var server = new ServerManager();
var site = server.Sites.FirstOrDefault(s => s.Name == "SITENAME");  
if (site != null)
        {
            //stop the site...
            site.Stop();
            if (site.State == ObjectState.Stopped)
            {
                //do deployment tasks...
            }
            else
            {
                throw new InvalidOperationException("Could not stop website!");
            }
            //restart the site...
            site.Start();
        }
        else
        {
            throw new InvalidOperationException("Could not find website!");
        }

site.Stop抛出异常:

"Access denied. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED))"

ExceptionType“UnauthorizedAccessException”

我该怎么做?我做错了什么?

2 个答案:

答案 0 :(得分:2)

扩展我的评论: 错误似乎很明显,您的应用程序运行的安全上下文没有权限。如果您的程序本身在IIS下运行,请确保其使用的应用程序池具有特权用户帐户。

在IIS中,您的网站在应用程序池下运行。确保应用程序池使用具有足够权限的标识。默认的ApplicationPoolIdentity帐户没有提升权限。

出于测试目的,您可以使用自己的登录名,因为您表明它具有管理权限。

enter image description here

答案 1 :(得分:1)

您需要以管理员身份运行该程序。