2015-12-21 68 views
3

此片段使得语义日志分析器抛出“事件名称'HandlingCommand'中WriteEvent参数和事件参数的数量不同。语义记录分析器例外WriteEvent参数和事件参数的数量不同

[NonEvent] 
public void HandlingCommand(Command command) 
{ 
    if (this.IsEnabled()) 
    { 
     this.HandlingCommand(command.Id.ToString(), command.Agent.AgentId.ToString()); 
    } 
} 

[Event(1101, 
    Level = EventLevel.Informational, 
    Keywords = Keywords.Agent)] 
private void HandlingCommand(string commandId, string agentId) 
{ 
    this.WriteEvent(1101, commandId, agentId); 
} 

解决该分析器错误的唯一方法是具有两个WriteEvent参数(事件ID和commandId例如)和一个事件参数(commandId例如)。如果我尝试使用具有多个参数/参数的任何组合,则会引发上述异常。任何具有多个参数/参数的事件都会抛出异常,而不仅仅是提供的示例。

我已经用这些样本作为起点https://github.com/mspnp/semantic-logging/tree/master/quickstarts

+0

我试图重现错误,没有成功。你可以将剩余的代码添加到片段吗? – mekoda

回答

2

我遇到了同样的错误,无法弄清楚。最终我得到了EventSourceAnalyzer代码,进行编译和调试。

我发现那是什么我WriteEvent实际上写如下:
EventSourceException在处理事件“方法名”:可从操作系统(例如事件发生率太快)没有免费的缓冲器。

在EventSourceAnalyzer类有

是这一行:
if (eventParameters.Length != this.EventData.Payload.Count)
throw mismatch exception

现在,因为我WriteEvent实际上是通过在3个参数,可以将事实WriteEvent在本质上抛出一个错误导致EventSourceAnalyzer错误地将其解释为不匹配。