【问题标题】:Trying to turn on/off iis website in c#尝试在 C# 中打开/关闭 iis 网站
【发布时间】:2012-07-02 21:23:32
【问题描述】:

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

我在互联网上搜索了这方面的内容,但找不到有效的示例或解释。

我找到了这个 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"

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

【问题讨论】:

  • 错误似乎很明显,您的应用程序运行的安全上下文没有权限。如果您的程序本身在 IIS 下运行,请确保它使用的应用程序池具有特权用户帐户。
  • 您可以使用“以管理员身份运行”运行应用程序,或者以编程方式执行权限提升过程。在我看来,这是一个很好的起点:msdn.microsoft.com/en-us/library/bb756996

标签: c# iis iis-7


【解决方案1】:

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

在 IIS 中,您的网站在应用程序池下运行。确保应用程序池正在使用具有足够权限的身份。默认的 ApplicationPoolIdentity 帐户没有提升权限是有充分理由的。

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

【讨论】:

  • 唯一可行的方法是以管理员身份启动 Visual Studio。
  • 好的,所以您正在使用 Visual Studio Web 服务器(又名“Cassini”)。我相信这确实在登录用户的上下文中运行,因此这意味着如果您以管理员身份运行 Visual Studio,那么它可以正常工作。当您部署到 IIS 时,请使用我在此答案中提供的说明。 (另外,如果您的问题已解决并且此答案有帮助,请将其标记为您问题的答案)谢谢,祝您好运!
【解决方案2】:

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

【讨论】:

  • @kingdango 的评论比这个答案好。
猜你喜欢
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 2021-05-12
相关资源
最近更新 更多