簡體   English   中英

“無法找到源Y中事件ID X的描述。”

[英]“The description for Event ID X in Source Y cannot be found.”

我正在嘗試將自定義事件從我的Web應用程序寫入Windows事件日志。 我沒有運氣使消息字符串工作,我一直得到“無法找到源Y中的事件ID X的描述。”

在嘗試縮小范圍時,我決定將事件寫入我的機器上已存在的源。 我只看了一個已經寫出來的事件,特別是SceCli事件1704。

我執行以下代碼:

var log = new EventLog("Application");
log.Source = "SceCli";

var ev = new EventInstance(1704, 0, EventLogEntryType.Information);
log.WriteEvent(ev);

但是,這仍然在事件查看器中提供以下內容:

無法找到源(SceCli)中的事件ID(1704)的描述。 本地計算機可能沒有必要的注冊表信息或消息DLL文件來顯示來自遠程計算機的消息。 您可以使用/ AUXSOURCE =標志來檢索此描述; 請參閱幫助和支持以獲取詳細信 以下信息是事件的一部分:事件日志文件已損壞。

我不確定我在這里缺少什么。 我正在寫出已經存在的完全相同的事件,但它仍然無法找到消息字符串。

我也遇到過類似的問題。 在做了大量的研究后,我做了以下我根據這篇文章驗證了步驟http://www.codeproject.com/Articles/4166/Using-MC-exe-message-resources-and-the-NT-event-lo Everything好像到位了。 除了一件事......當我偶然發現這個msdn時,我意識到了這一點http://msdn.microsoft.com/en-us/library/windows/desktop/aa363661(v=vs.85).aspx

如上一段所述..'如果應用程序調用RegisterEventSource並傳遞在注冊表中找不到的源名稱,則事件日志記錄服務默認使用應用程序日志。 但是,由於沒有消息文件,因此事件查看器無法將任何事件標識符或事件類別映射到描述字符串,並且將顯示錯誤。 因此,您應該為應用程序的注冊表添加一個唯一的事件源,並指定一個消息文件。 因此,我在RegisterEventSource中的應用程序名稱與注冊表中的應用程序名稱不匹配。 我修復此問題,現在它可以工作......所以如果您遇到此問題,請仔細檢查您的注冊表項。

你能正確看到其他事件嗎? 很可能您無法使用該特定源和事件ID(SceCli / 1704),因為C#事件類不提供與事件消息文件中的事件模板匹配的正確數量的參數。 我認為它只適用於事件消息文件中只有“%1”的源(有關詳細信息,請參閱http://www.eventid.net/show-DocId-22.htm )。

無論如何,我認為您需要為自定義應用程序創建一個源(如果它不存在),然后記錄日志條目。 在記錄事件之前檢查源是否存在,如果不存在則創建它:

if (!EventLog.SourceExists("MyWebApp"))
         EventLog.CreateEventSource("MyWebApp", "Application");
EventLog.WriteEntry("MyWebApp", "Some message", EventLogEntryType.Information, 1704);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM