1

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

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

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

4

1 回答 1

0

通过使用 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");
于 2013-07-16T10:57:47.967 回答