Pregunta

Estoy intentando cambiar en tiempo de ejecución de una llave de mi archivo de configuración de aplicaciones, pero no funciona.

que hago en esta forma:

ConfigurationSettings.AppSettings["XPTO"] = "HELLO";

Parece que sólo cambia en la memoria, no en el archivo.

¿Alguien sabe cómo hacer esto?

Gracias.

¿Fue útil?

Solución

Tome un vistazo a mi visión general de Los archivos de configuración de .NET ... En resumen, creo que quieres un entorno de ámbito de usuario. Se comportará más como usted espera.

  

Editar Si está utilizando la configuración de diseño en Visual Studio , entonces simplemente cambiar el 'Ámbito de aplicación' a 'usuario'. Si no, usted debe ser capaz de hacer el equivalente mediante programación.

Otros consejos

El archivo AppSettings no está diseñado para ser modificable. Está diseñado para almacenar configuraciones que no va a cambiar en tiempo de ejecución, pero podría cambiar con el tiempo, es decir:. Cadenas de conexión DB, de dirección URL del servicio web, etc.

Por lo tanto, si bien puede ser posible actualizar el archivo en realidad debe volver a evaluar si este valor debe ser almacenado allí.

Asumiendo que su aplicación tiene permisos de escritura en el archivo ...



    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  // the config that applies to all users
    AppSettingsSection appSettings = config.AppSettings;

    if (appSettings.IsReadOnly() == false)
    {
        appSettings("Key").Value = "new value";

        config.Save();
    }

Estoy haciendo caso omiso de todas las posibles excepciones que pueden ser lanzadas ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top