.net 当IIS中的站点具有通配符SSL证书时,如何删除该站点?

.net 当IIS中的站点具有通配符SSL证书时,如何删除该站点?,.net,iis,ssl,process,.net,Iis,Ssl,Process,我们正在开发SaaS解决方案,并希望自动创建和删除系统实例。这个过程中的一个步骤是删除IIS站点,但事实证明这相当困难 问题是我们对所有站点使用通配符SSL证书,如果您尝试以正常方式删除站点的HTTPS绑定,它将删除所有站点的绑定。这是因为绑定有两个组件,其中一个在所有站点之间共享。这就是IIS的工作原理。根据web,您可以通过手动编辑applicationHost文件或使用appcmd.exe控制台应用程序删除站点来解决此问题,因为它不使用IIS所依赖的WMA api 我正在尝试的解决方案是在

我们正在开发SaaS解决方案,并希望自动创建和删除系统实例。这个过程中的一个步骤是删除IIS站点,但事实证明这相当困难

问题是我们对所有站点使用通配符SSL证书,如果您尝试以正常方式删除站点的HTTPS绑定,它将删除所有站点的绑定。这是因为绑定有两个组件,其中一个在所有站点之间共享。这就是IIS的工作原理。根据web,您可以通过手动编辑applicationHost文件或使用appcmd.exe控制台应用程序删除站点来解决此问题,因为它不使用IIS所依赖的WMA api

我正在尝试的解决方案是在我的管理网站上运行命令行应用程序,但我遇到了麻烦。下面的代码显示了我试图做的事情,但是我总是得到错误代码1168,因为找不到错误。我不确定这意味着什么,但如果我直接在控制台中运行相同的命令,它将按预期工作

internal void DeleteSite(string iisName)
{
    // Impersonation of system admin user
    using (Permission.Elevate())
    {
        ProcessStartInfo start = new ProcessStartInfo();
        start.Arguments = string.Format(@"delete site ""{0}""", iisName);
        start.FileName = @"C:\Windows\System32\inetsrv\appcmd.exe";
        start.WindowStyle = ProcessWindowStyle.Hidden;
        start.CreateNoWindow = true;

        using (Process proc = Process.Start(start))
        {
            proc.WaitForExit();

            var exitCode = proc.ExitCode;
            if (exitCode > 0)
                throw new Exception("Error code " + exitCode);
        }
    }
}

因此,问题有三个方面。是否有更好的整体解决方案(必须完全自动化)?如果没有,我在上面的代码中做错了什么?如果所有其他操作都失败了,我可以做些什么来调试控制台应用程序中的错误代码?

在删除网站之前是否停止该网站?是的。由于手动使用appcmd.exe的效果与预期一致,我认为我从主机应用程序调用appcmd.exe的方式一定是错误的。嘿,我知道这已经有一段时间了,哈哈,但是你是如何解决这个问题的?好问题-我不确定我是否这样做过。