尝试使用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>
元素,因为它一直在添加它。我错过了什么吗?
答案 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
}