2011-09-22 10 views
8

que he tenido un usuario me envía en un informe de bloqueo de una llamada a Settings.Upgrade():¿Cómo se daña mi archivo de configuración de user.config?

 
System.Configuration.ConfigurationErrorsException: Root element is missing. 

lo tengo que me envíe su expediente user.config y el archivo estaba todo ceros. Se había vuelto corrupto de alguna manera.

Encontré una manera de recuperarme de ella rastreando el directorio% localappdata% \ MyAppName y eliminando todos los archivos de configuración de usuario y relanzando la aplicación. Si dejo que la aplicación continúe la ejecución, dará más ConfigurationErrorsException s.

¿Podría esta corrupción ser el resultado de algo que he hecho? He tenido varios informes de una base de unos pocos miles de usuarios, pero no he estado jugando con ese archivo directamente. ¿Alguien más se ha encontrado con este usuario.config corrupción?

Respuesta

4

Solo una idea que obtuve de este article.

¿Puedes verificar tu versión de .Net framework y, de ser así, hiciste algunas actualizaciones recientemente que podrían haber alterado los métodos que estás usando?

Otro aunque fue este article (es un poco viejo - 2008) pero da algunos consejos sobre cómo manejar el archivo de configuración dañado.

¿Puede ser también un problema de memoria causado por la aplicación no pudiendo cop con la tasa de usuario actual?

Espero que ayude, ya que aún no me ha pasado, pero sigue siendo un dilema interesante y desconcertante.

+0

Creo que todo está solo en .NET 4. En cuanto al segundo artículo, obtener la ruta exacta al archivo ofensivo es un buen truco para distinguir el archivo dañado en lugar de hacer una eliminación masiva. Voy a cambiar mi manejo para usar eso en su lugar. – RandomEngy

+1

Me he encontrado con el mismo problema 4 veces en miles de aplicaciones instaladas. Esto ocurre durante fallas de energía. Eliminar el archivo hace que la aplicación funcione bien, pero pierde la configuración del usuario. Moral: no use la configuración de Microsoft, o mejor aún, haga webapps. –

+1

Seguimiento: ahora estoy almacenando configuraciones usando SQLite, que es resistente contra este tipo de corrupción. No he tenido más problemas como este. – RandomEngy

1

Parece que la configuración se daña si se ejecutan varias instancias de la aplicación. Parece un problema de temporización, pero una forma relativamente fácil de reproducir es hacer que la aplicación se inicie y luego salir e intentar guardar la configuración al salir.

Cuestiones relacionadas