.net 当IIS中的站点具有通配符SSL证书时,如何删除该站点?
我们正在开发SaaS解决方案,并希望自动创建和删除系统实例。这个过程中的一个步骤是删除IIS站点,但事实证明这相当困难 问题是我们对所有站点使用通配符SSL证书,如果您尝试以正常方式删除站点的HTTPS绑定,它将删除所有站点的绑定。这是因为绑定有两个组件,其中一个在所有站点之间共享。这就是IIS的工作原理。根据web,您可以通过手动编辑applicationHost文件或使用appcmd.exe控制台应用程序删除站点来解决此问题,因为它不使用IIS所依赖的WMA api 我正在尝试的解决方案是在我的管理网站上运行命令行应用程序,但我遇到了麻烦。下面的代码显示了我试图做的事情,但是我总是得到错误代码1168,因为找不到错误。我不确定这意味着什么,但如果我直接在控制台中运行相同的命令,它将按预期工作.net 当IIS中的站点具有通配符SSL证书时,如何删除该站点?,.net,iis,ssl,process,.net,Iis,Ssl,Process,我们正在开发SaaS解决方案,并希望自动创建和删除系统实例。这个过程中的一个步骤是删除IIS站点,但事实证明这相当困难 问题是我们对所有站点使用通配符SSL证书,如果您尝试以正常方式删除站点的HTTPS绑定,它将删除所有站点的绑定。这是因为绑定有两个组件,其中一个在所有站点之间共享。这就是IIS的工作原理。根据web,您可以通过手动编辑applicationHost文件或使用appcmd.exe控制台应用程序删除站点来解决此问题,因为它不使用IIS所依赖的WMA api 我正在尝试的解决方案是在
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的方式一定是错误的。嘿,我知道这已经有一段时间了,哈哈,但是你是如何解决这个问题的?好问题-我不确定我是否这样做过。