2011-11-15 63 views
2

我正在尋找編寫代碼來打開和編輯機器的基本web.config文件(作爲HttpModule的安裝程序的一部分)。通過代碼打開機器/基礎Web.Config(64位)

我想編輯在通常位於文件:

  • C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ CONFIG \ web.config中
  • C:\ WINDOWS \微軟.NET \ Framework64 \ V2.0.50727 \ CONFIG \ web.config中

如果我使用下面的代碼我可以打開該文件的32位版本:

Configuration configuration = WebConfigurationManager.OpenWebConfiguration(null); 

如何打開文件的64位版本? (無論它安裝在哪裏,即使它安裝在機器上的其他地方)。

UPDATE: 有問題的代碼是,增加了一臺機器的底座的web.config一個GAC組件參考,HTTP模塊,和HttpHandler的安裝程序。由於該模塊旨在用於「整個服務器」的基礎上,因此基本web.config是放置該模塊的最佳位置。我重申:這不是建議在評論中提及的病毒。事實上,你需要運行提升來觸摸這些文件應該有助於使這個假設爲假。

+1

我可以在這裏基地,但爲什麼你需要編輯這個文件?你不能用你的本地'web.Config'覆蓋設置嗎? –

+0

我在一個windows安裝程序中使用這個工具,它將HttpModule和HttpHandler添加到_base_ web.config中,以便單個服務器上的所有站點都默認安裝它們。 – Doug

+2

@Doug - 我不瞭解你,但如果我發現我安裝的應用程序在全球範圍內做了類似的事情,我認爲它是一種病毒,並將其從我的系統中刪除。人們不會善意地接管所有網站。 –

回答

2
XmlTextReader reader = new XmlTextReader(FILE_NAME); 
XmlDocument doc = new XmlDocument(); 
doc.Load(reader); 
reader.Close(); 

//Select the cd node with the matching title 
XmlNode oldCd; 
XmlElement root = doc.DocumentElement; 
oldCd = root.SelectSingleNode("/catalog/cd[title='" + oldTitle + "']"); 

XmlElement newCd = doc.CreateElement("cd"); 
newCd.SetAttribute("country",country.Text); 

newCd.InnerXml = "<title>" + this.comboBox1.Text + "</title>" + 
     "<artist>" + artist.Text + "</artist>" + 
     "<price>" + price.Text + "</price>"; 

root.ReplaceChild(newCd, oldCd); 

//save the output to a file 
doc.Save(FILE_NAME);