Leer archivo .config del servidor desde aplicacion libreria de cla

08/01/2009 - 19:53 por Yoselyn | Informe spam
Hola que tal amigos!

Les cuento mi problema, estoy desarrollando con vs.net 2005, con c# una
aplicacion windows,
la cual consta de la siguiente estructura:
El proyecto windows que es donde están todas las pantallas, las interfaces
de usuario.
Un proyecto web, con algunos servicios web que me facilitan el acceso a las
funciones de acceso a los datos (a futuro este debería alojarse en un
servidor web). Y
Dos proyectos que son del tipo libreria de clases, en estos es que tengo la
logica de la aplicación, accedo a la BD etc..


Mi problema es que tengo en el proyecto web un archivo de configuración el
cual necesito acceder desde mis proyectos de librerias de clases, de momento
para abrir el archivo lo hago con una funcion asi:

public static string GetAppSetting(string key, string DefaultValue)
{
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "C:\\proyectos\\ProyWeb\\ProyWeb.config";

Configuration config ConfigurationManager.OpenMappedExeConfiguration(fi leMap,
ConfigurationUserLevel.None);

return config.AppSettings.Settings[key].Value;
}

De esta manera puedo leer el archivo .config y todos sus keys, pero
obviamente tengo un problema porque la ruta se la estoy dando a mano y esta
va a cambiar cuando se instale el sistema..

¿De que manera pudiera hacer esto?
¿Se puede abrir el archivo usando una especie de namespace o algo asi?

Me preocupa también que esta ruta no la guarde en algún lugar donde una ves
instalado el sistema pueda ser visto por los usuarios ya que hay información
"sensible" en este .config para la aplicacion.

De antemano gracias por la ayuda que me puedan brindar!

Preguntas similare

Leer las respuestas

#1 Jesús
09/01/2009 - 12:35 | Informe spam
En realidad es muy sencillo y no hay que hacer nada especial, ya que
ConfigurationManager lee el archivo de configuración de la aplicación que se
está ejecutando, aunque lo estés utilizando en una librería de clases:


public static string GetAppSetting(string key, string defaultValue)
{
string setting = ConfigurationManager.AppSettings[key];
if (string.IsNullOrEmpty(setting))
{
return defaultValue;
}
else
{
return setting;
}
}


"Yoselyn" escribió en el mensaje de
noticias news:
Hola que tal amigos!

Les cuento mi problema, estoy desarrollando con vs.net 2005, con c# una
aplicacion windows,
la cual consta de la siguiente estructura:
El proyecto windows que es donde están todas las pantallas, las interfaces
de usuario.
Un proyecto web, con algunos servicios web que me facilitan el acceso a
las
funciones de acceso a los datos (a futuro este debería alojarse en un
servidor web). Y
Dos proyectos que son del tipo libreria de clases, en estos es que tengo
la
logica de la aplicación, accedo a la BD etc..


Mi problema es que tengo en el proyecto web un archivo de configuración el
cual necesito acceder desde mis proyectos de librerias de clases, de
momento
para abrir el archivo lo hago con una funcion asi:

public static string GetAppSetting(string key, string DefaultValue)
{
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "C:\\proyectos\\ProyWeb\\ProyWeb.config";

Configuration config > ConfigurationManager.OpenMappedExeConfiguration(fi leMap,
ConfigurationUserLevel.None);

return config.AppSettings.Settings[key].Value;
}

De esta manera puedo leer el archivo .config y todos sus keys, pero
obviamente tengo un problema porque la ruta se la estoy dando a mano y
esta
va a cambiar cuando se instale el sistema..

¿De que manera pudiera hacer esto?
¿Se puede abrir el archivo usando una especie de namespace o algo asi?

Me preocupa también que esta ruta no la guarde en algún lugar donde una
ves
instalado el sistema pueda ser visto por los usuarios ya que hay
información
"sensible" en este .config para la aplicacion.

De antemano gracias por la ayuda que me puedan brindar!
Respuesta Responder a este mensaje
#2 Yoselyn
09/01/2009 - 16:09 | Informe spam
Gracias por tu ayuda Jesus..

mi problema radicaba también en que el .config que necesito leer no es el
web.config sino otro que está dentro del servidor.. Pero me habeis dado una
idea y finalmente, al menos por ahora lo he resuelto asi:


public static string GetAppSetting(string key, string DefaultValue)
{
// aqui con la clase ConfigurationManager leo el nombre que le
di a mi otro archivo .config, para esto tengo un key llamado "configFile"
dentro de mi web.config donde tengo el nombre de este archivo
string configFile =
ConfigurationManager.AppSettings["configFile"];
// tomo el path del servidor
string currentPath = HttpRuntime.AppDomainAppPath.ToString();

WebConfigurationFileMap fileMap = new WebConfigurationFileMap();
string physDir = currentPath;

VirtualDirectoryMapping vDirMap = new
VirtualDirectoryMapping(physDir, true, configFileServerName);
fileMap.VirtualDirectories.Add("/", vDirMap);

// abro mi otro archivo de configuracion
Configuration config =
WebConfigurationManager.OpenMappedWebConfiguration(fileMap, "/config");

return config.AppSettings.Settings[key].Value;
}


De momento lo he probado en mi localhost y desde otro equipo en la red y me
funciona, ya veremos luego cuando lo suba al server de internet :)

Gracias por la ayuda y pues igual acepto sugerencias! :)

"Jesús" wrote:

En realidad es muy sencillo y no hay que hacer nada especial, ya que
ConfigurationManager lee el archivo de configuración de la aplicación que se
está ejecutando, aunque lo estés utilizando en una librería de clases:


public static string GetAppSetting(string key, string defaultValue)
{
string setting = ConfigurationManager.AppSettings[key];
if (string.IsNullOrEmpty(setting))
{
return defaultValue;
}
else
{
return setting;
}
}


"Yoselyn" escribió en el mensaje de
noticias news:
> Hola que tal amigos!
>
> Les cuento mi problema, estoy desarrollando con vs.net 2005, con c# una
> aplicacion windows,
> la cual consta de la siguiente estructura:
> El proyecto windows que es donde están todas las pantallas, las interfaces
> de usuario.
> Un proyecto web, con algunos servicios web que me facilitan el acceso a
> las
> funciones de acceso a los datos (a futuro este debería alojarse en un
> servidor web). Y
> Dos proyectos que son del tipo libreria de clases, en estos es que tengo
> la
> logica de la aplicación, accedo a la BD etc..
>
>
> Mi problema es que tengo en el proyecto web un archivo de configuración el
> cual necesito acceder desde mis proyectos de librerias de clases, de
> momento
> para abrir el archivo lo hago con una funcion asi:
>
> public static string GetAppSetting(string key, string DefaultValue)
> {
> ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
> fileMap.ExeConfigFilename = "C:\\proyectos\\ProyWeb\\ProyWeb.config";
>
> Configuration config > > ConfigurationManager.OpenMappedExeConfiguration(fi leMap,
> ConfigurationUserLevel.None);
>
> return config.AppSettings.Settings[key].Value;
> }
>
> De esta manera puedo leer el archivo .config y todos sus keys, pero
> obviamente tengo un problema porque la ruta se la estoy dando a mano y
> esta
> va a cambiar cuando se instale el sistema..
>
> ¿De que manera pudiera hacer esto?
> ¿Se puede abrir el archivo usando una especie de namespace o algo asi?
>
> Me preocupa también que esta ruta no la guarde en algún lugar donde una
> ves
> instalado el sistema pueda ser visto por los usuarios ya que hay
> información
> "sensible" en este .config para la aplicacion.
>
> De antemano gracias por la ayuda que me puedan brindar!


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida