gpt4 book ai didi

c# - 以编程方式删除安全站点会破坏其他绑定(bind)

转载 作者:太空狗 更新时间:2023-10-30 01:15:34 25 4
gpt4 key购买 nike

我有清除未使用网站的服务。

using (var serverMgr = new ServerManager())
{
var sitename = $"site-{instanceName}";

if (IsWebsiteExists(serverMgr, sitename))
{
logger.Debug($"Deleting instance '{sitename}' from www server...");
var site = serverMgr.Sites.SingleOrDefault(x => x.Name == sitename);
if (site != null)
{
serverMgr.Sites.Remove(site);
}

var appPool = serverMgr.ApplicationPools.SingleOrDefault(x => x.Name == sitename);
if (appPool != null)
{
serverMgr.ApplicationPools.Remove(appPool);
}
serverMgr.CommitChanges();
}
}

上面的代码按预期工作,但破坏了使用相同证书的其他站点。其他站点意外地在 https 绑定(bind)中具有未选择的证书,并且它们停止工作。这真的很烦人。

为什么?它是我的代码中的错误还是我应该更改它?是 IIS 错误吗?

最佳答案

删除站点之前删除所有绑定(bind):

using (var iisManager = new ServerManager)
{
Site site = iisManager.Sites[siteName];
site.Bindings.Clear();
iisManager.CommitChanges();

site = iisManager.Sites[siteName];
iisManager.Sites.Remove(site);
iisManager.CommitChanges();
}

删除绑定(bind)后调用 CommitChanges 很重要。此外,之后您必须再次查询该站点,否则您将得到 InvalidOperationException

此外,使用这种方法,在删除站点后调用 CommitChanges 时,您不会在某些系统上得到 NotImplementedException,因此它同时解决了两个烦人的问题。

如果您的目标是 .NET Framework 4.6.1 或更高版本,您也可以使用此解决方案:https://stackoverflow.com/a/37802922/2279059

关于c# - 以编程方式删除安全站点会破坏其他绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37792421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com