.net - que - La descripción de la identificación del evento de la fuente no se puede encontrar
meta tags (10)
Esto generalmente es causado por un programa que escribe en el registro de eventos y luego se desinstala o mueve.
Cuando escribo un registro en el registro de eventos de Windows, obtengo el evento a continuación, ¿cuál es la causa raíz de este mensaje y cómo puedo solucionarlo? Muchas gracias
La descripción del evento ID 51001 de la fuente RRWS no se puede encontrar. O el componente que genera este evento no está instalado en su computadora local o la instalación está dañada. Puede instalar o reparar el componente en la computadora local.
Si el evento se originó en otra computadora, la información de la pantalla se debe guardar con el evento.
La siguiente información fue incluida con el evento:
registro de prueba messge
el recurso de mensaje está presente pero el mensaje no se encuentra en la tabla de cadena / mensaje
Necesita crear un origen de evento y un archivo de mensaje para ello. El código se ve así:
var data = new EventSourceCreationData("yourApp", "Application");
data.MessageResourceFile = pathToYourMessageFile;
EventLog.CreateEventSource(data);
Entonces necesitarás crear un archivo de mensaje . También hay este artículo que explica las cosas (no lo leí todo, pero parece bastante completo).
Obtuve este error después de crear un origen de evento en el Registro de la aplicación desde la línea de comando usando "EventCreate". Este comando crea una nueva clave en: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Application
Si nos fijamos en la clave que se ha creado (por ejemplo, SourceTest), habrá un valor de cadena denominado EventMessageFile
, que para mí se estableció en %SystemRoot%/System32/EventCreate.exe
.
Cambie esto a c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/EventLogMessages.dll
Elimine los valores de CustomSource
y TypesSupported
.
Esto debería detener el mensaje "La descripción de la identificación del evento ...".
También me enfrenté a un problema similar. Después de hacer mucha investigación, lo hice siguiendo, verifiqué los pasos según este artículo http://www.codeproject.com/Articles/4166/Using-MC-exe-message-resources-and-the-NT-event-lo Everything parecía estar en su lugar. Excepto una cosa ... me di cuenta cuando tropecé con este msdn http://msdn.microsoft.com/en-us/library/windows/desktop/aa363661(v=vs.85).aspx
Como dice el último párrafo ... "Si la aplicación llama a RegisterEventSource y pasa un nombre de fuente que no se puede encontrar en el registro, el servicio de registro de eventos utiliza el registro de la aplicación de manera predeterminada. Sin embargo, como no hay archivos de mensajes, el Visor de eventos no puede asignar ningún identificador de evento o categoría de evento a una cadena de descripción, y mostrará un error. Por este motivo, debe agregar un origen de evento único al registro de su aplicación y especificar un archivo de mensaje. '' Entonces mi nombre de aplicación en RegisterEventSource no coincidía con el nombre de la aplicación en el registro. Lo arreglé y ahora funciona ... Por lo tanto, comprueba las entradas de tu registro si tienes este problema.
Use PowerShell para crear su registro de eventos y fuente:
New-EventLog -LogName MyApplicationLog `
-Source MySource `
-MessageResourceFile C:/windows/Microsoft.NET/Framework/v4.0.30319/EventLogMessages.dll
Necesitará los mensajes dll para evitar el problema que está viendo.
Para mí, el problema fue que mi perfil de destino se ajustó por accidente a "Perfil de cliente de .Net Framework 4". Cuando reconstruí el servicio en cuestión usando el ".Net Framework 4", ¡el problema desapareció!
Un amigo mío tenía exactamente el mismo problema. Intentó todas las opciones descritas pero nada parecía funcionar. Después de muchos estudios, también de la descripción de Microsoft , concluyó para reiniciar el sistema.
Parecía que el sistema operativo no podía actualizar la lista de fuentes de eventos registrados. Solo después de un reinicio, el origen del evento se registró correctamente.
Conclusión: reinicia tu sistema!
Si abre el visor del registro de eventos antes de que se cree el origen del evento, por ejemplo, mientras instala un servicio, recibirá ese mensaje de error. No necesita reiniciar el sistema operativo: simplemente tiene que cerrar y abrir el visor de eventos.
NOTA: No proporciono un archivo de mensajes personalizados. La creación del origen del evento usa la configuración predeterminada, como se muestra en la respuesta de Matt .
También tropecé con esto, aunque causado por otra posibilidad más: el identificador de evento (que estaba "oculto" en un #define
) estaba estableciendo la gravedad en el error (los dos bits de orden superior como se indica en los identificadores de eventos ). Como el Visor de eventos muestra el identificador de eventos (los 16 bits de orden inferior), no podría haber una coincidencia ...
Como referencia, he reunido un conjunto de sugerencias basadas en mi propia investigación mientras solucioné problemas y solucioné esto:
Si su entrada de registro no termina con " el recurso de mensaje está presente, pero el mensaje no se encuentra en la tabla de cadena / mensaje " (a diferencia de la pregunta original):
- Significa que te falta información de registro
- Verifique dos veces el nombre del origen del evento y las claves de registro
Si necesita agregar / editar información del registro, recuerde:
- Reinicie el Visor de eventos (como se indica en el elemento 6 de KB166902 y también por @JotaBe)
- Si no funciona, reinicie el servicio Windows Event Log /
EventLog
(o reinicie el sistema, como lo indicó @BrunoBieri).
Si no desea crear un recurso DLL personalizado, tenga en cuenta que los archivos de mensajes de eventos comúnmente disponibles tienen algunas advertencias:
- Tienen una gran cantidad de identificadores que intentan cubrir la mayoría de los casos
- .NET
EventLogMessages.dll
(como lo insinúa @Matt) sube a0xFFFF
- Windows
EventCreate.exe
"solo" sube a0x3E9
- .NET
- Cada entrada contiene
%1
- Eso significa que solo se mostrará la primera cadena
- Todas las cadenas pasadas a
ReportEvent
aún se pueden inspeccionar mirando los detalles del evento (seleccione el evento deseado, vaya a la pestaña Detalles y expanda EventData )
- Tienen una gran cantidad de identificadores que intentan cubrir la mayoría de los casos
Si sigues recibiendo " no se puede encontrar " en tus eventos registrados (pregunta original):
- Verifique dos veces los valores del identificador de eventos que se están usando (en mi caso fue la parte Calificadores del identificador del evento)
- Compare los detalles del evento (seleccione el evento deseado, vaya a la pestaña Detalles y expanda Sistema ) con un ejemplo de trabajo
¿Qué tal una solución del mundo real?
Si todo lo que necesita es una forma "rápida y sucia" de escribir algo en el registro de eventos sin registrar "fuentes personalizadas" (requiere derechos de administrador), o proporcionar "archivos de mensajes" (requiere trabajo y dolor de cabeza) simplemente haga esto:
EventLog.WriteEntry(
".NET Runtime", //magic
"Your error message goes here!!",
EventLogEntryType.Warning,
1000); //magic
De esta forma, estará escribiendo en un registro de "Aplicación" existente sin la molesta "No se puede encontrar la descripción del Identificador de evento 0"
Si quieres que se explique la parte "mágica", publiqué sobre esto aquí