ASP.NET - Cambiar connectionstring en tiempo de ejecucion

 
Vista:

Cambiar connectionstring en tiempo de ejecucion

Publicado por Javier Santamaria (312 intervenciones) el 22/05/2007 11:50:00
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 respuesta
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cambiar connectionstring en tiempo de ejecucion

Publicado por Javier Santamaria (312 intervenciones) el 24/05/2007 11:01:20
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar