C# 为创建的时间创建自定义XPath

C# 为创建的时间创建自定义XPath,c#,.net,c#-4.0,event-viewer,C#,.net,C# 4.0,Event Viewer,我正在尝试读取在指定时间后生成的事件日志,但它给出了无效的查询字符串异常 我已经了解了msdn如何提供XPath,下面是我的实现 var Date = "6/13/2017 3:51:10 PM"; string queryString = "*[System/TimeCreated/@SystemTime >=" + Date + "]]"; SecureString pw = GetPassword(); EventLogSes

我正在尝试读取在指定时间后生成的事件日志,但它给出了无效的查询字符串异常

我已经了解了msdn如何提供XPath,下面是我的实现

var Date = "6/13/2017 3:51:10 PM";
        string queryString = "*[System/TimeCreated/@SystemTime >=" + Date + "]]";
        SecureString pw = GetPassword();

        EventLogSession session = new EventLogSession(
            "MachineName",                               // Remote Computer
            "DomainName",                                  // Domain
            "userName",                                // Username
            pw,
            SessionAuthentication.Default);

        pw.Dispose();
        EventLogQuery query = new EventLogQuery("Application", PathType.LogName, queryString);
        query.Session = session;

        try
        {
            EventLogReader logReader = new EventLogReader(query);
            for (EventRecord eventDetail = logReader.ReadEvent(); eventDetail != null; eventDetail = logReader.ReadEvent())
            {
                var date = eventDetail.TimeCreated;
            }

            // Display event info
        }
        catch (EventLogException e)
        {
            Console.WriteLine("Could not query the remote computer! " + e.Message);
            return;
        }

在XPath中,您必须做两件事。首先,必须引用日期值,因为它是一个字符串。第二,你必须使用ISO格式,因为这是它的格式

 var Date = "2017-06-13T15:51:10Z";
 string queryString = "*[System/TimeCreated[@SystemTime >='" + Date + "']]";

Still is给出了相同的例外。Querystring的值是多少?看起来方括号也不平衡。Querystring=“*[System/TimeCreated[@SystemTime='2017-06-13T15:51:10Z']”并且您还对>符号进行了XML编码。这是不必要的,因为您不在XML中。