2010-05-03 29 views
3

我有2個項目,每個人都有一個WebConfig文件,我想從一個地方編輯2個webconfig文件,我嘗試這樣做:與多個Web配置C#工作

string configPath = "/WebSite Name"; 
    Configuration confUI = WebConfigurationManager.OpenWebConfiguration("~"); 
    Configuration confProtocol = WebConfigurationManager.OpenWebConfiguration(configPath);     
    AppSettingsSection appSettingsUI = (AppSettingsSection)confUI.GetSection("appSettings"); 
    AppSettingsSection appSettingsProtocol = (AppSettingsSection)confProtocol.GetSection("appSettings"); 

    if (appSettingsUI != null & appSettingsProtocol != null) 
    { 
     appSettingsUI.Settings[key].Value = value; 
     appSettingsProtocol.Settings[key].Value = value; 

     confUI.Save(); 
     confProtocol.Save(); 
    } 

此外,我請嘗試

Configuration confProtocol = WebConfigurationManager.OpenWebConfiguration(configPath,"webSiteName"); 

confProtocol設置爲空的問題。

如何從UI項目中設置協議項目的WebConfig路徑?

+0

這兩個站點都位於同一網站上? – Nix 2010-05-03 12:24:20

+0

是的,同一本地主機 – Hiyasat 2010-05-03 13:18:12

回答

0

//你的代碼是好的,但需要稍加修改

string appName = Environment.GetCommandLineArgs()[2]; 

//這應該返回當前站點的虛擬路徑 例如: 「E:\代碼\網站」 //刪除最後一個網站,並添加第二個網站

string configFile = string.Concat(appName, "web.config"); 
ExeConfigurationFileMap configFMap = new ExeConfigurationFileMap(); 
configFMap.ExeConfigFilename = configPath; 
Configuration confProtocol = ConfigurationManager.OpenMappedExeConfiguration(configFMap, ConfigurationUserLevel.None); 

string configPath = "/WebSite Name"; 
    Configuration confUI = WebConfigurationManager.OpenWebConfiguration("~"); 
    Configuration confProtocol = WebConfigurationManager.OpenWebConfiguration(configPath);     
    AppSettingsSection appSettingsUI = (AppSettingsSection)confUI.GetSection("appSettings"); 
    AppSettingsSection appSettingsProtocol = (AppSettingsSection)confProtocol.GetSection("appSettings"); 

    if (appSettingsUI != null & appSettingsProtocol != null) 
    { 
     appSettingsUI.Settings[key].Value = value; 
     appSettingsProtocol.Settings[key].Value = value; 

     confUI.Save(); 
     confProtocol.Save(); 
    } 
1

嗯。我想檢查「〜」路徑和「configPath」將是一個很好的起點。

+0

感謝重播 如何設置「configPath」? – Hiyasat 2010-05-03 12:15:16

1

如果你想讓根web.config只傳遞null給OpenWebConfiguration。

Configuration confProtocol = Configuration.OpenWebConfiguration(null); 

如果他們在不同的主機,那麼你需要指定主機。

Configuration confProtocol = WebConfigurationManager.OpenWebConfiguration(configPath,"Protocol Web Site");