Конфигурация приложения (app.config) - PullRequest
0 голосов
/ 09 июля 2011

Я читаю файл конфигурации приложения из кода, вставленного ниже.У меня вопрос: если эти настройки недоступны в файле конфигурации, мне нужно написать отсутствующие записи или полный файл конфигурации со значениями по умолчанию.Пожалуйста, помогите мне.Заранее спасибо

String _ProcessName = Process.GetCurrentProcess().ProcessName;
String _ConfigarationFileName = _ProcessName + ".exe.config";
String _ApplicationStartupPath = Application.StartupPath;
System.Configuration.AppSettingsReader _ConfigurationAppSettings = new System.Configuration.AppSettingsReader();

if (System.IO.File.Exists(System.IO.Path.Combine(_ApplicationStartupPath, _ConfigarationFileName)))
{
   try
   {
      String COMMsDB = (String)_ConfigurationAppSettings.GetValue("TempDatabaseName", Type.GetType("String"));           // 'Temp database name 
      String COMMsServer = (String)_ConfigurationAppSettings.GetValue("TempServerName", Type.GetType("String"));         // 'Temp server name
      String CDBUserName = (String)_ConfigurationAppSettings.GetValue("TempUserName", Type.GetType("String"));           // 'Temp server user id 
      String CDBPass = (String)_ConfigurationAppSettings.GetValue("TempPassword", Type.GetType("String"));               // 'Temp server encrypted password 
      String COMMsPCName = (String)_ConfigurationAppSettings.GetValue("TempComputerName", Type.GetType("String"));       // 'Temp Pc Name for execute 

      String SP1Name = (String)_ConfigurationAppSettings.GetValue("SP1Name", Type.GetType("String"));      // 'Stored procedure one name to execute before starting the transfer process
      String SP2Name = (String)_ConfigurationAppSettings.GetValue("SP2Name", Type.GetType("String"));                    // 'Stored procedure two name to execute before starting the Sales process
      String SP3Name = (String)_ConfigurationAppSettings.GetValue("SP3Name", Type.GetType("String"));                    // 'Stored procedure three name to execute before starting the TransferOrders process
      String SP4Name = (String)_ConfigurationAppSettings.GetValue("SP4Name", Type.GetType("String"));                    // 'Stored procedure four name to execute before starting the Database Copy process
      String SP5Name = (String)_ConfigurationAppSettings.GetValue("SP5Name", Type.GetType("String"));                    // 'Stored procedure four name to execute before Exitting the application
   }
   catch (Exception ex)
   {
      MessageBox.Show("Please Check the Configaration File " + ex.Message);
   }
}
else
{
   MessageBox.Show("Configaration File is Missing");
}

Ответы [ 3 ]

1 голос
/ 10 июля 2011

Лучший способ чтения (и записи) значений .config можно найти здесь ...

Как изменить время выполнения файла App.config с помощью C #

Надеюсь, это поможет?

1 голос
/ 09 июля 2011

Если для выполнения необходима отсутствующая запись в app.config, то, конечно, вы должны обеспечить правильную обработку. Либо предоставьте значения по умолчанию, либо остановите выполнение и исправьте app.config.

0 голосов
/ 10 июля 2011

То, что я ожидал, было каким-то способом записать недостающие записи в файл конфигурации. или намек на это. Как только мне удалось найти способ записи файла конфигурации, если он отсутствует, или если в файле конфигурации отсутствует одно из значений

пожалуйста, найдите приведенный ниже код

            String _ProcessName = Process.GetCurrentProcess().ProcessName;
            String _ConfigarationFileName = _ProcessName + ".exe.config";
            String _ApplicationStartupPath = Application.StartupPath;

        if (!System.IO.File.Exists(System.IO.Path.Combine(_ApplicationStartupPath, _ConfigarationFileName)))
        {

            //Creating XmlWriter Settings
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            settings.IndentChars = "  ";
            settings.NewLineOnAttributes = true;

            //creating a empty xml documet to write the Configaration Key's 
            //If you are good in xml writing you can use  below code part to created the key values straight away.  
            using (XmlWriter writer = XmlWriter.Create(System.IO.Path.Combine(_ApplicationStartupPath, _ConfigarationFileName), settings))
            {   
                writer.WriteStartElement("configuration");
                writer.WriteStartElement("appSettings");
                writer.WriteEndElement();
                writer.WriteEndElement();                    
                writer.Flush();
            }
        }


        //This code part will create the keys and write the values for you. 
        //Open the Configaration file to Write the values 

        System.Configuration.Configuration config = 
            System.Configuration.ConfigurationManager.OpenExeConfiguration(System.IO.Path.Combine(_ApplicationStartupPath,_ProcessName + ".exe")); // you can enter either exe or dll if its a class library. 


        config.AppSettings.Settings.Add("TempServerName", ""); 
        config.AppSettings.Settings.Add("TempUserName", "");
        config.AppSettings.Settings.Add("TempPassword", "");


        config.Save(System.Configuration.ConfigurationSaveMode.Modified);

Большое спасибо всем вашим ответам.

...