【发布时间】:2014-12-31 14:15:15
【问题描述】:
伙计们,我正在尝试通过 C#(Microsoft Web 管理)从 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 的绑定。
【问题讨论】:
-
先创建一个集合的副本。
-
怎么样?我似乎无法创建
BindingCollection的对象,也无法将 null 分配给BindingCollection然后将绑定添加到它,因为我得到“对象未设置为对象的实例”错误