正在将重写规则从web.config复制到另一个web.config

本文关键字:web config 复制 另一个 重写规则 | 更新日期: 2023-09-27 18:22:36

我们正计划制作一个c#脚本,以自动将重写规则从一个web.config复制到另一个web.config。我们为每个客户提供了多个web.config,并且我们有一些一般的重写规则,这些规则有时需要更改。一般重写规则有一个唯一的前缀,将其标识为一般规则(而不是特定于客户的)。

我们想知道是否有可能使用C#将规则从一个web.config复制到另一个。仅仅从一个配置中读取重写url/match-url并将其写入另一个配置可能并不总能完成任务;例如,我们有时也需要添加条件。

有什么方法可以做到这一点吗?我们希望尽可能地实现自动化。我不是最擅长c#的,但我想可能从一个文件中读取整个规则并将其粘贴到另一个文件?或者,通过XMLReader解析两个web.config文件,然后复制规则会更好吗?

正在将重写规则从web.config复制到另一个web.config

通过使用XML而不是ServerManager类,我能够自己解决这个问题。这正是我想要的。

XmlDocument doc1 = new XmlDocument();
doc1.Load(@"web.new.config");
XmlDocument doc2 = new XmlDocument();
doc2.Load(@"web.config");
XmlNode rules = doc2.SelectSingleNode("/configuration/system.webServer/rewrite/rules");
XmlNodeList baserules = doc2.SelectNodes("/configuration/system.webServer/rewrite/rules/rule[contains(@name, 'GenericPrefix')]");
XmlNodeList ruleList = doc1.SelectNodes("/configuration/system.webServer/rewrite/rules/rule[contains(@name, 'GenericPrefix')]");
foreach(XmlNode baseruleOld in baserules)
{
    baseruleOld.ParentNode.RemoveChild(baseruleOld);
}
foreach(XmlNode rule in ruleList)
{
    XmlNode tocopynode = doc2.ImportNode(rule, true);
    rules.AppendChild(tocopynode);
}
doc2.Save("web.config");