1

I'm using an user.config to store my application settings. I can access the settings in C# for example with Properties.Settings.Default.Setting1 and the user.config file looks like that:

<?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>

But when my user.config is corrupt for what reason ever, my application is crashing with the following System.ConfigurationErrorException.

I would prefer in that case that the application is deleting the corrupt user.config file and starts with the default settings.

Is there a way to achieve that?

Update

I've seen that this question has been asked before see user.config corruption issue and User.config corruption.

But If I try the following code

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

the exception.Filename is null. And If I use ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal) inside my try block the exception is not raised in all cases.

Wollmich
  • 1,616
  • 1
  • 18
  • 46

1 Answers1

-1

I found that Filename is set on a child innerException Maybe you must iterate innerException