2015-12-21 71 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錯誤地將其解釋爲不匹配。