Ho notato su alcune macchine in cui il file user.config della mia applicazione è in qualche modo danneggiato ed è vuoto all'apertura. Non riesco a capire perché questo è successo. C'è una cosa comune che potrebbe causare questo? Un modo per prevenirlo in sicurezza?Quali sono le cause per lo svuotamento di user.config? E come posso ripristinare senza riavviare?
La seconda domanda è come eseguire il ripristino dello stato? Rilevo l'eccezione ed elimina il file user.config, ma non riesco a trovare un modo per ripristinare la configurazione senza riavviare l'applicazione. Tutto quello che faccio sull'oggetto Proprietà causa l'errore seguente:
"sistema di configurazione è riuscito a inizializzare"
Reset, Reload, e aggiornare tutti fare nulla per risolvere il problema.
Ecco il mio codice per la cancellazione dopo che l'eccezione:
catch (System.Configuration.ConfigurationErrorsException ex)
{
string fileName = "";
if (!string.IsNullOrEmpty(ex.Filename))
fileName = ex.Filename;
else
{
System.Configuration.ConfigurationErrorsException innerException = ex.InnerException as System.Configuration.ConfigurationErrorsException;
if (innerException != null && !string.IsNullOrEmpty(innerException.Filename))
fileName = innerException.Filename;
}
if (System.IO.File.Exists(fileName))
System.IO.File.Delete(fileName);
}
Se il file è user.config corrrupt, è necessario riavviare, a condizione che in realtà memorizzare valori all'interno del file del impostazione. Il motivo per cui è necessario riavviare è ovvio, se il file è danneggiato, l'applicazione è in uno stato instabile. –
Questo è quello che ho capito. Speravo che ci fosse un modo per ripristinare la configurazione dell'app alle sue impostazioni predefinite in fase di esecuzione senza dover riavviare - in quanto il riavvio sembra essere molto inaffidabile. – JeremyK
Possiedo un'applicazione che presenta di volta in volta questo stesso problema. Ad oggi, non ho trovato una soluzione o la causa principale di questo problema. L'applicazione è passata da .NET v3.5 a v4.0, quindi il problema è presente sia nel runtime v2.0 che v4.0. Possibile duplicato: http://stackoverflow.com/questions/3071651/how-to-catch-exception-when-loading-net-winform-app-user-config-file – harlam357