2013-07-16 50 views
1

我們計劃製作一個c#腳本來自動將重寫規則從一個web.config複製到另一個web.config。我們爲每個客戶提供了多個web.config,我們有一些通用的重寫規則,有時需要更改。一般重寫規則具有唯一的前綴,將其標識爲一般規則(而不是客戶特定的)。將重寫規則從web.config複製到另一個

我們想知道是否可以使用C#將規則從一個web.config複製到另一個web.config。只需從一個配置中讀取重寫url /匹配url並將其寫入另一個配置文件中,可能並不總能完成這項工作;例如,我們有時也需要添加條件。

有沒有辦法做到這一點?我們希望儘可能自動化。我不是最好的C#,但我想可能會從一個文件中讀取整個規則並將其粘貼到另一個文件中?或者,通過XMLReader解析兩個web.config文件然後複製規則可能會更好嗎?

+0

這是「建造時間」的變化嗎?爲什麼不使用config [轉換](http://msdn.microsoft.com/zh-cn/library/dd465326.aspx)? –

+0

否 - 這是部署後,對於這個問題,運行在網站上的web應用程序在ColdFusion 10中編碼 - 所以我們不用Visual Studio來創建這個應用程序。 –

+0

考慮XML/Config包含。 – Aron

回答

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"); 
相關問題