Estoy trabajando en una aplicación web que muestra datos de registros de eventos, similar al Visor de eventos. La aplicación también debe proporcionar una forma para que los usuarios se suscriban a los registros de eventos y reciban notificaciones cuando se escribe una entrada en los registros suscritos, utilizando un servicio web.¿Hay alguna forma de saber qué EventLog provocó el evento EntryWritten en C#?
Estoy usando este código para suscribirse a un registro de eventos en el servicio web:
EventLog eventLog = new EventLog(observer.logName, observer.machineName);
eventLog.EnableRaisingEvents = true;
eventLog.EntryWritten += new EntryWrittenEventHandler(eventLog_EntryWritten);
eventList.Add(eventLog);
Estoy tratando de utilizar observadores como suscriptores a los registros de eventos, y cuando se maneja un evento EventWritten, llamada el método de actualización de un observador. El problema es que no sé cómo diferenciar los registros de eventos, ya que todos usan el mismo controlador de eventos. Estoy haciendo esto porque la cantidad de registros de eventos difiere de una máquina a otra. Además, quiero que los observadores manejen solo un tipo de EventLog, es decir. un observador enviaría un correo electrónico cuando un evento se escribe en el registro de la aplicación.
que utilizan esta línea de código para obtener todos los registros en el equipo actual:
remoteEventLogs = EventLog.GetEventLogs(machineName);
EventWritten controlador de eventos tiene este parámetro object sender, pero Visual Studio muestra su tipo que EventLogInternal, que no puedo usar , y no puedo convertir el remitente a EventLog para obtener la propiedad EventLog.Log. Si trato de su emisión, así:
void eventLog_EntryWritten(object sender, EntryWrittenEventArgs e)
{
var log = (EventLog)sender;
}
consigo una excepción diciendo que no puedo emitir un EventLogInternal a EventLog.
¿Hay alguna manera de saber qué EventLog dispara el evento?
Gracias
nice hackear temporalmente. podría ser un problema con el nuevo .Net framework – Zam