从自己的线程停止IIS网站

本文关键字:IIS 网站 自己的 线程 | 更新日期: 2023-09-27 18:04:23

我使用以下代码从自己的线程停止我的WCF服务,以更新我的服务使用的一些文件。

try
{
    var server = new ServerManager();
    var site = server.Sites.FirstOrDefault(s => s.Name == "Default Web Site");
    if (site != null)
    {
        Thread.Sleep(1000);
        site.Stop();
        if (site.State == ObjectState.Stopped)
        {
            Thread.Sleep(5000);
        }
        site.Start();
    }
    else
    {
        throw new FaultException("Server Are Trying To Stop Is not Found");
    }
}
catch (Exception ex)
{
    throw new FaultException(ex.Message);
}

但是当我执行代码时,我得到以下错误:

"访问被拒绝。(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"

从自己的线程停止IIS网站

我认为你应该在这种情况下运行Powershell脚本,因为你想要停止我所理解的自我进程。这意味着在停止后,您的进程将被杀死,并且无法执行更新。使用power shell,您可以停止进程,复制文件并重新开始

Import-Module WebAdministration
Stop-WebSite 'Default Web Site'
#... copy files here
Start-WebSite 'Default Web Site'