在添加之前,如何检查该元素是否已存在?

时间:2016-07-08 20:12:59

标签: asp.net

尝试使用ConfigurationElementCollection搜索web.config。

这是文章来源: https://www.iis.net/configreference/system.webserver/modules/add

以下是我尝试使用的c#代码片段:

        using (ServerManager serverManager = new ServerManager())
        {
            Configuration config = serverManager.GetWebConfiguration("Default Web Site/app1");
            ConfigurationSection modulesSection = config.GetSection("system.webServer/modules");
            ConfigurationElementCollection modulesCollection = modulesSection.GetCollection();

            ConfigurationElement addElement = modulesCollection.CreateElement("remove");
            addElement["name"] = @"CartHeader";
            //addElement["type"] = @"Contoso.ShoppingCart.Header";
            //addElement["preCondition"] = @"managedHandler";

            // Check if your CartHeader module exists
            var exists = modulesCollection.Any(m => m.Attributes["name"].Value.Equals("CartHeader"));
            // Handle accordingly
            if (!exists)
            {
                // Create your module here
                modulesCollection.Add(addElement);
                serverManager.CommitChanges();
            }
        }

在添加之前,如何检查该元素是否已存在?

我更改了CreateElement(&#34;删除&#34;)并在尝试添加元素之前添加了一项检查,但显然它没有考虑<remove>元素,因为它一直在添加它。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您可能会使用一些LINQ来查询,并通过Enumerable.Any()方法查看具有该特定名称属性的元素是否存在:

// Check if your CartHeader module exists
var exists = modulesCollection.Any(m => m.Attributes["name"].Value.Equals("CartHeader"));
// Handle accordingly
if(!exist)
{
     // Create your module here
}