Удалите поврежденный user.config вместо System.ConfigurationErrorException - PullRequest
1 голос
/ 01 мая 2019

Я использую user.config для хранения настроек своего приложения.Я могу получить доступ к настройкам в C #, например, с помощью Properties.Settings.Default.Setting1, и файл user.config выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <userSettings>
        <MyApp.Properties.Settings>
            <setting name="Setting1" serializeAs="String">
                <value>ABCDEF</value>
            </setting>
        </MyApp.Properties.Settings>
    </userSettings>
</configuration>

Но когда мой user.config поврежден по какой-либо причине, мое приложение падает сследующее System.ConfigurationErrorException.

Я бы предпочел, чтобы в этом случае приложение удаляло поврежденный файл user.config и запускалось с настройками по умолчанию.

Есть ли способ добиться этого?

Обновление

Я видел, что этот вопрос задавался, прежде чем см. испорченность user.config и Повреждение User.config.

Но если я попробую следующий код

// Check for corrupt settings
try
{
    var dummy = Properties.Settings.Default.Setting1;
}
catch (ConfigurationErrorsException exception)
{
    Console.WriteLine("Settings are corrupt!");
    File.Delete(exception.Filename); 
}

, то exception.Filename будет null.И если я использую ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal) внутри моего try блока, исключение возникает не во всех случаях.

...