• Viernes 8 de Noviembre de 2024, 19:22

Autor Tema:  Cambiar Connectionstring En Tiempo De Ejecucion  (Leído 1500 veces)

Javier Santamaria

  • Miembro MUY activo
  • ***
  • Mensajes: 142
    • Ver Perfil
Cambiar Connectionstring En Tiempo De Ejecucion
« en: Martes 22 de Mayo de 2007, 12:05 »
0
Hola, como estan?

A ver se me presenta la siguietne duda:

Como puedo cambiar las connection string de mi web.config en tiempo de ejecucion de mi aplicacion?

Gracias de antemano por vuestras respuestas

Javier Santamaria

  • Miembro MUY activo
  • ***
  • Mensajes: 142
    • Ver Perfil
Re: Cambiar Connectionstring En Tiempo De Ejecucion
« Respuesta #1 en: Jueves 24 de Mayo de 2007, 11:19 »
0
Hola, les dejo la solucion que me pasaron en otro foro por si les interesa:

Si mal no recuerdo, usar config = WebConfigurationManager.OpenWebConfiguration("~/web.config")
te da un archivo de solo lectura.

Para obtener un archivo al cual puedes escribir, usa
WebConfigurationManager.OpenWebConfiguration("~").

También, asegúrate de que la cuenta bajo la cual corre ASP.NET tiene
permisos de escritura sobre el archivo/directorio de la aplicación.

Pero, creo que estas escogiendo la manera mas difícil de hacer esto.

En vez de editar web.config directamente, yo guardara las conexiones
en un archivo externo, y sobreescribiría *ese* archivo.

Ejemplo :



En ese archivo incluyes las conexiones que quieras, igualito como si fuera web.config:



connectionString="bla, bla, bla"
providerName="System.Data.SqlClient" />


connectionString="bla, bla, bla"
providerName="System.Data.SqlClient" />


Ahora, con simplemente sobreescribir conexiones.config, tienes los cambios que quieras.

Hay una ventaja adicional al hacerlo así, y es que puedes asignar permisos de escritura por roles.

Por ejemplo, le das derecho de sobreescribir web.config al administrador del sistema,
pero el administrador de la base de datos podría editar conexiones.config.

Administrativamente, eso tiene mas sentido.

Nota: para poder habilitar que la Aplicacion reinicie automáticamente cuando
conexiones.config es modificado, tienes que hacer un cambio en el machine.config.

En , edita , agregándole

restartOnExternalChanges="true"

Quedará así :



...y listo.

Nota: el PublicKeyToken tuyo puede ser distinto al mío.
No hagas "cut-and-paste de esa parte. Solo de restartOnExternalChanges="true".

Ahora solo tienes que sobreescribir conexiones.config...y tus nuevas conexiones funcionarán inmediatamente.