c# - servicio - los metadatos contienen una referencia que no se puede resolver
Archivo de configuraciĆ³n del servicio de Windows C# (6)
Desarrollé una aplicación de servicio de Windows usando Visual Studio 2008 / C #.
Tengo un archivo app.config en el proyecto. Cuando está instalado, el archivo app.exe.config aparece junto al ejecutable, pero parece que no está leyendo los valores cuando intento acceder a ellos a través de ConfigurationManager.AppSettings.
¿Ha copiado el archivo de configuración en otro lugar o hay algún otro problema que desconozco?
Gracias por adelantado,
Martín.
Editar: El nombre del archivo de configuración es infact my_exe_file_name.exe.config, se ve así:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="RuntimeFrequency" value="3" />
</appSettings>
</configuration>
y estoy tratando de leer a través de:
ConfigurationManager.AppSettings["RuntimeFrequency"]
El valor de depuración que veo continuamente es ''1'' y no ''3''. ¿Estoy haciendo algo mal aquí?
¿Es posible que tenga más de una instancia de la entrada RuntimeFrequency definida? ConfigurationManager lee el archivo de arriba a abajo y procesa cada configuración individualmente. Por lo tanto, el último valor de RuntimeFrequency que se define en el archivo es el que usará.
Si desea saber con certeza si su archivo se está utilizando, simplemente eliminaría o comentaría cualquier definición de RuntimeFrequency (los errores de copiar / pegar suceden) y esperaré para ver un error de la aplicación cuando ConfigurationManager intente hacer referencia a una entrada en AppSettings que no existe.
Cuando se encuentre en el modo de depuración, compruebe y vea qué configuraciones hay en my_exe_file_name.vshost.exe.config. También asegúrese de ajustar esto en el archivo app.config. Visual Studio debe actualizar el archivo de configuración final en las carpetas bin / debug.
El archivo App.config debe renombrarse como your_exe_file_name.exe.config y colocarse cerca del archivo exe.
En general, para los servicios de Windows que escribo, dejo caer el archivo appName.exe.config en C: / WINDOWS / system32 /
Tal vez tenga una versión anterior en ese directorio, que es donde su servicio obtiene el valor, aunque haya actualizado el archivo de configuración en su proyecto.
Tal vez estás actualizando el archivo de configuración incorrecto. Deberías verificar que usando
System.Configuration.ConfigurationManager.OpenExeConfiguration(PATH_TO_CONFIG);
Localicé el error y estaba relacionado con los permisos de archivo. Después de instalar el servicio, mi cuenta de usuario local no tuvo acceso para modificar el archivo app.exe.config.
La herramienta que estaba usando para editar no me informaba que se me negaba el acceso para guardar el archivo, eso es notepad ++ si alguien está interesado, así que no pude ver que no guardaba el archivo de configuración anterior.
Resuelto ahora, gracias a todos.
Martín.