Working with multiple C # web configurations

I have 2 projects, each of which has a WebConfig file, and I want to edit 2 webconfig files from one place, and I'm trying to do this:

    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();
    }

Also i try

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

The problem is that confProtocol is set to empty.

How to set WebConfig path of protocol project from user interface project?

+3
source share
3 answers

// your code is good, but need a little change

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

// this should return the virtual path of the current site ex: "e: \ Code \ Website" // delete the last website and add the second website

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();
    }
0
source

Hm. I think checking the path "~" and "configPath" will be a good starting point.

+1
source

, root web.config null OpenWebConfiguration.

  Configuration confProtocol  = Configuration.OpenWebConfiguration(null);

, .

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

Source: https://habr.com/ru/post/1743811/


All Articles