我正在处理显示事件日志数据的Web应用程序,类似于事件查看器。应用程序还必须为用户提供一种方式,以便订阅事件日志,并在使用Web服务将条目写入订阅日志时接收通知。有没有办法告诉哪个EventLog导致C#中的EntryWritten事件?
我使用此代码订阅事件日志中的Web服务:
EventLog eventLog = new EventLog(observer.logName, observer.machineName);
eventLog.EnableRaisingEvents = true;
eventLog.EntryWritten += new EntryWrittenEventHandler(eventLog_EntryWritten);
eventList.Add(eventLog);
我试图用观察员的用户事件日志,并当EventWritten事件被处理,呼叫一个观察者的更新方法。问题是,我不知道如何区分事件日志,因为它们都使用相同的事件处理程序。我这样做是因为事件日志的数量因机器而异。另外,我希望观察者只处理一种类型的事件日志,即。一个观察员会在事件写入应用程序日志时发送电子邮件。
我使用这行代码来得到当前计算机上的所有日志:
remoteEventLogs = EventLog.GetEventLogs(machineName);
EventWritten事件处理程序有这个对象发件人的参数,但Visual Studio显示其类型为EventLogInternal,我不能用,并且我不能将发件人转换为EventLog以获取EventLog.Log属性。如果我尝试抛出它,像这样:
void eventLog_EntryWritten(object sender, EntryWrittenEventArgs e)
{
var log = (EventLog)sender;
}
我收到一个异常,说我无法将EventLogInternal转换为EventLog。
有没有办法知道哪个EventLog触发事件?
感谢
不错,暂时破解。可能是新的.Net框架问题 – Zam 2017-06-15 14:58:33