"Не удалось найти описание для события с кодом X в источнике Y".

Я пытаюсь записать пользовательские события из моего веб-приложения в журнал событий Windows. Мне не повезло заставить строки сообщений работать, я продолжаю получать "Описание для идентификатора события X в источнике Y не может быть найдено".

Пытаясь сузить это, я решил записать событие в источник, который уже существует на моей машине. Я только что посмотрел на одно из событий, которое уже было записано, а именно событие 1704 SceCli.

Я выполняю следующий код:

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

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

Тем не менее, это все еще дает мне следующее в Event Viewer:

Описание для идентификатора события ( 1704) в источнике ( SceCli) не может быть найдено. Локальный компьютер может не иметь необходимой информации реестра или файлов DLL сообщений для отображения сообщений с удаленного компьютера. Вы можете использовать флаг /AUXSOURCE=, чтобы получить это описание; см. Помощь и Поддержка для деталей. Следующая информация является частью события: Файл журнала событий поврежден.

Я не уверен, что мне здесь не хватает. Я записываю точно такое же событие, которое уже существует, и оно все еще не может найти строку сообщения.

2 ответа

Я также столкнулся с подобной проблемой. Проведя много исследований, я сделал следующее, проверил шаги в соответствии с этой статьей 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 не совпадает с именем приложения в реестре. Я исправил это, и теперь это работает... Так что, пожалуйста, дважды проверьте записи реестра, если вы столкнулись с этой проблемой.

Можете ли вы увидеть другие события правильно? Скорее всего, вы не можете использовать этот конкретный источник и идентификатор события (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);
Другие вопросы по тегам