Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft.Web.Administration和以迭代方式删除IIS应用_C#_Iis 7 - Fatal编程技术网

C# Microsoft.Web.Administration和以迭代方式删除IIS应用

C# Microsoft.Web.Administration和以迭代方式删除IIS应用,c#,iis-7,C#,Iis 7,我正在使用C#with Microsoft.Web.Administration删除网站内的所有应用程序。我不想删除站点应用程序本身(path=“/”) 代码如下: ServerManager manager = new ServerManager(); for (int i = 0; i < manager.Sites[siteName].Applications.Count; i++) { if (manager.Sites[siteName].Applications[i].

我正在使用C#with Microsoft.Web.Administration删除网站内的所有应用程序。我不想删除站点应用程序本身(path=“/”)

代码如下:

ServerManager manager = new ServerManager();
for (int i = 0; i < manager.Sites[siteName].Applications.Count; i++)
{
    if (manager.Sites[siteName].Applications[i].Path != "/")
    {
        manager.Sites[siteName].Applications.RemoveAt(i);
    }
}
manager.CommitChanges();
将正常工作,但它也将删除路径为“/”的应用程序,这是我不想要的

我也试过这样做:

Application baseApp = null;
for (int i = 0; i < manager.Sites[siteName].Applications.Count; i++)
{
    if (manager.Sites[siteName].Applications[i].Path == "/")
    {
        baseApp = manager.Sites[siteName].Applications[i];
    }
}

manager.Sites[siteName].Applications.Clear();

if (baseApp != null)
{
    manager.Sites[siteName].Applications.Add(baseApp);
}

manager.CommitChanges();
Application baseApp=null;
对于(int i=0;i
但这也不起作用。path=“/”的应用程序从未重新添加,或添加不正确


有谁对Microsoft.Web.Automation有更丰富的经验,对一次删除多个应用程序有一些见解,可以帮助我解决这个问题吗?

事实证明,我犯了一个典型的愚蠢错误,即在枚举集合时更改集合。第一个应用程序将被删除,计数将下降。一些应用程序从未被关注过。移除的随机性仅仅是由于收集的无序性。我真傻

这项工作:

     List<Application> appsToRemove = new List<Application>();
     for (int i = 0; i < manager.Sites[siteName].Applications.Count; i++)
     {
        if (manager.Sites[siteName].Applications[i].Path != "/")
        {
           Console.WriteLine("Removing {0}", manager.Sites[siteName].Applications[i].Path);
           appsToRemove.Add(manager.Sites[siteName].Applications[i]);
        }
     }
     foreach (Application a in appsToRemove)
     {
        manager.Sites[siteName].Applications.Remove(a);
     }
     manager.CommitChanges();
List-appsToRemove=new-List();
对于(int i=0;i
     List<Application> appsToRemove = new List<Application>();
     for (int i = 0; i < manager.Sites[siteName].Applications.Count; i++)
     {
        if (manager.Sites[siteName].Applications[i].Path != "/")
        {
           Console.WriteLine("Removing {0}", manager.Sites[siteName].Applications[i].Path);
           appsToRemove.Add(manager.Sites[siteName].Applications[i]);
        }
     }
     foreach (Application a in appsToRemove)
     {
        manager.Sites[siteName].Applications.Remove(a);
     }
     manager.CommitChanges();