C# 远程事件日志分页
我有以下要求C# 远程事件日志分页,c#,asp.net,linq,event-viewer,C#,Asp.net,Linq,Event Viewer,我有以下要求 读取远程计算机事件日志 传递凭证 允许用户在MVC应用程序中逐页浏览此内容 根据我的研究,我相信这可以通过结合& 虽然我已经成功地使用凭据连接到远程计算机并读取日志文件,但我仍然坚持使用分页功能。我不知道如何使用EventLogQuery实现LINQ的Skip&Take方法 这些机器中的一些将有超过20000个日志,我希望避免在分页之前将它们全部加载到内存中 有没有一种方法可以通过EventLogQuery实现分页?这里介绍了如何使用的延迟求值功能来实现这一点。给定要使用Eve
- 读取远程计算机事件日志
- 传递凭证
- 允许用户在MVC应用程序中逐页浏览此内容
有没有一种方法可以通过EventLogQuery实现分页?这里介绍了如何使用
的延迟求值功能来实现这一点。给定要使用EventLogQuery
执行的查询,您可以执行以下操作:
public IEnumerable<EventRecord> QueryEventRecords(string queryString)
{
var query = new EventLogQuery("Application", PathType.LogName, queryString);
using (var reader = new EventLogReader(query))
{
EventRecord eventRecord;
while ((eventRecord = reader.ReadEvent()) != null)
{
yield return eventRecord;
}
}
}
这就是说,在MVC应用程序中不会对远程PC进行分页—在屏幕分页之间保留迭代器的状态是不可取的。最好是从远程机器预取查询中感兴趣的所有事件,并将其保存到中央数据库(即类似于企业软件,如)。然后,您可以使用类似于EF的ORM在空闲时浏览事件数据
var result = QueryEventRecords("*[System[(Level = 3)]]")
.Skip(10)
.Take(10)
.ToList();