从IIS网站绑定中删除IP

新手程序员

伙计们,我正在尝试通过C#(Microsoft Web Administration)从IIS网站绑定中删除特定的IP。

基本上,我想做的是检查IIS中所有站点的绑定,如果有任何绑定IP与用户提供的IP匹配,则应将其删除,如果特定站点没有其他具有不同IP的绑定,则应停止网站。

但是,当我收到“修改了集合;可能无法执行枚举操作”时,似乎无法循环删除IP 错误。

这是我的代码:

static void Main(string[] args)
{
    ServerManager mgr = new ServerManager();

    foreach (Site s in mgr.Sites)
    {
        Console.WriteLine("Site {0}", s.Name);

        foreach (Application app in s.Applications)
        {
            Console.WriteLine("\tApplication: {0}", app.Path);

            foreach (VirtualDirectory virtDir in app.VirtualDirectories)
            {
                Console.WriteLine("\t\tVirtual Dir: {0}", virtDir.Path);
            }
        }

        BindingCollection bindingCollection = s.Bindings;
        foreach (Binding b in  bindingCollection)
        {
            Console.WriteLine("\n Bindings: {0}",b.EndPoint);
            if (b.EndPoint != null)
            {
                //Hard Coded IP for testing purpose
                if (b.EndPoint.ToString() == "1.1.1.1:86")
                {
                    Console.WriteLine("Removing this ip : {0}",b.EndPoint.ToString());
                    bindingCollection.Remove(b);
                }
            }
        }
      mgr.CommitChanges();
    }
    Console.ReadLine();
}

我应该怎么做才能删除绑定?我需要循环删除它,因为一个站点可能具有多个使用同一IP的绑定。

vcsjones

枚举器的版本适用于BCL内的大多数集合,这意味着您无法在循环浏览集合时对其进行修改。您可以像这样复制集合:

var bindingCollection = new List<Binding>(s.Bindings);

所以现在您的循环看起来像这样:

var bindings = s.Bindings;
var bindingCollection = new List<Binding>(bindings);
foreach (Binding b in bindingCollection)
{
    Console.WriteLine("\n Bindings: {0}", b.EndPoint);
    if (b.EndPoint != null)
    {
        //Hard Coded IP for testing purpose
        if (b.EndPoint.ToString() == "1.1.1.1:86")
        {
            Console.WriteLine("Removing this ip : {0}", b.EndPoint.ToString());
            bindings.Remove(b);
        }
    }
}

但是,这实际上并没有像您期望的那样删除绑定。您需要调用b.Delete()以实际删除绑定。使用时Remove,您要做的就是将其从现有绑定构建的集合中删除。因此,b.Delete()在将其从集合中删除之前添加

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

IIS网站IP更改

来自分类Dev

使用多个绑定从Powershell在IIS中创建网站

来自分类Dev

从IIS删除绑定的命令

来自分类Dev

在wix安装的下拉列表中绑定IIS本地网站吗?

来自分类Dev

WiX在创建新网站之前删除默认的IIS网站

来自分类Dev

在Apache中绑定IP

来自分类Dev

IIS 上具有私有 IP 地址的网站

来自分类Dev

IIS 网站使用 localhost 但不使用 IP 地址或域名

来自分类Dev

在IIS中将绑定主机名添加到网站中断网站

来自分类Dev

绑定到IP时,IIS CertificateHash为Null

来自分类Dev

从 ip 列表中删除 ','

来自分类Dev

在IIS Express中处理URL绑定失败

来自分类Dev

了解Azure VM上IIS中的绑定

来自分类Dev

在Knockout js中删除绑定

来自分类Dev

从绑定中删除表单参数

来自分类Dev

通过netsh添加IP时的IIS 7.0-7.5 IP地址重新绑定

来自分类Dev

使用owin自托管网站设置主机名绑定和https,而无需iis

来自分类Dev

(IIS)使用Powershell将net.tcp绑定添加到网站

来自分类Dev

(IIS)使用Powershell将net.tcp绑定添加到网站

来自分类Dev

查找iframe注入并从网站中删除

来自分类Dev

从网站链接中删除协议名称

来自分类Dev

从单个Google搜索结果中删除网站

来自分类Dev

从网站中删除烦人的点击处理逻辑

来自分类Dev

如何从网站代码中删除白色边框?

来自分类Dev

从网站网址中删除首页

来自分类Dev

从网站中的元素删除边界线

来自分类Dev

如何在我的网站中删除空白

来自分类Dev

从网页 Java 中删除部分网站

来自分类Dev

从网站链接中删除协议名称