【问题标题】:Why am I getting c# oneshot search exception "Object reference not set to an instance of an object"?为什么我会收到 c# oneshot 搜索异常“对象引用未设置为对象的实例”?
【发布时间】:2015-08-11 18:43:49
【问题描述】:

我最近遇到了这个异常,我不知道为什么。 2天前一切都很好,我完全不知道现在发生了什么。 现在我知道这是空异常,但又一次 - 不明白为什么。它出现在“使用(var stream = service.Oneshot(oneshotQuery, outArgs))”上。 service.Oneshot 和 outArgs 都不为空。我唯一想到的是“流”,但为什么呢?

不难看出我在 c# 方面相对较新。

异常消息框显示:

System.NullReferenceException:对象引用未设置为实例 的一个对象。在 Splunk.Service.VersionCompare(String right) 在 Splunk.Service.SetSegmentationDefault(Args& args) 在 Splunk.Service.Oneshot(字符串查询,Args inputArgs)在 Transkrypter_2.0.Form1.Form1_Load(Object sender, EventArgs e) in c:...\Form1.cs:第 45 行

第 45 行是“使用 (var stream = service.Oneshot(oneshotQuery, outArgs))”

感谢您的帮助:

 using Splunk;



private void Form1_Load(object sender, EventArgs e)
     {
         try
         {
             var connect = new ServiceArgs
             {
                 Host = "myip",
                 Port = 8089,
                 Scheme = "https"
             };

             Splunk.Service service = new Splunk.Service(connect);

             var oneshot = new Splunk.Client.JobArgs();
             //oneshot.EarliestTime = "2015-08-09 10:25:00";
             //oneshot.LatestTime = "2015-08-09 11:25:00"
             String oneshotQuery = "search * | head 10";

             var outArgs = new JobResultsArgs
             {
                 OutputMode = JobResultsArgs.OutputModeEnum.Xml,
                 Count = 0,
             };

             using (var stream = service.Oneshot(oneshotQuery, outArgs))
             {
                 using (var rr = new ResultsReaderXml (stream))
                 {
                     foreach (var @event in rr)
                     {
                         richTextBox1.Text += "Event:" + Environment.NewLine;
                         foreach (string key in @event.Keys)
                         {
                             richTextBox1.Text += "   " + key + " -> " + @event[key];
                         }
                     }
                 }
             }

             button1.BackColor = Color.Green;
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.ToString() ,ex.Message.ToString());
         }

另外我想提一下,这是第二个应用程序,只是为了测试这个错误,这里和我的主应用程序一样发生了同样的异常。

【问题讨论】:

  • 我怀疑 outArgs 的成员尚未初始化。你能提供类型 JobResultArgs 的定义吗?
  • Splunk.Service.Oneshot() 方法内部发生异常,因此如果没有看到该代码,很难提供太多帮助。您是否能够在该方法中设置断点并逐步查看失败的确切位置?假设您拥有 Splunk.Service 的代码,并且它不是第 3 方 dll。如果是这样,变量“服务”上是否有任何属性表明它是否已连接,您可以检查它,因为一种猜测是连接没有建立。
  • JobResultArgs 的定义在here 至于第3方dll - 使用Visual Studio 13你只需要下载NuGets Splunk SDK,这就是我正在使用的,所以对我来说很难从中获取更多信息。但我可以肯定地说,这种连接是稳定的,因为我试图找出每个元素。我觉得这个问题很愚蠢,因为它很简单,但实际上没有更多选择了。已联系 splunk 支持,但尚未得到答复。
  • 这里的代码家伙:github.com/splunk/splunk-sdk-csharp/blob/…。另请注意,这是 v1 C# SDK。 V2 更酷,并且是异步的。 dev.splunk.com/csharp
  • @NigelK 有点正确。我只是忘了在Splunk.Service service = new Splunk.Service(connectArgs); 之后添加service.Login("login", "password");,我发现只有这一点,但上面的代码只是让它更明显——愚蠢的我。一个唯一的谜团:它以前是如何工作的......;)所以,是的,话题结束了,非常感谢大家的帮助!

标签: c# search sdk splunk


【解决方案1】:

@NigelK 有点正确。我只是忘了在Splunk.Service service = new Splunk.Service(connectArgs); 之后添加service.Login("login", "password"); 我一个人发现了这一点,但上面的@halr9000 代码只是让它更明显 - 愚蠢的我。一个唯一的谜团:它以前是如何工作的...... ;) 所以是的,话题结束了,非常感谢大家的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多