Источник не найден, но некоторые или все журналы событий не удалось найти
Я получаю следующее исключение. Я дал полный контроль над собой Asp.net учетная запись в журналах событий в редактировании реестра.
[SecurityException: источник не найден, но некоторые или все события
журналы не удалось найти. Недоступные журналы: безопасность.]
System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate) +664
System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate) +109
System.Diagnostics.EventLog.SourceExists(String source) +14 Microsoft.ApplicationBlocks.ExceptionManagement.DefaultPublisher.VerifyValidSource() +41
Я думаю, это связано с какой-то проблемой конфигурации на сервере?
8 ответов:
EventLog.SourceExistsперечисляет через подразделыHKLM\SYSTEM\CurrentControlSet\services\eventlogчтобы увидеть, содержит ли он подраздел с указанным именем. Если учетная запись пользователя, под которой выполняется код, не имеет доступа для чтения к подразделу, к которому он пытается получить доступ (в вашем случаеSecurityподраздел) перед поиском целевого источника вы увидите исключение, подобное тому, которое вы описали.обычный подход для решения таких вопросов является Регистрация источников журнала событий во время установки (под учетной записью администратора), а затем предположим, что они существуют во время выполнения, позволяя любое результирующее исключение обрабатывается как неожиданное, если целевой источник журнала событий фактически не существует во время выполнения.
было такое же исключение. В моем случае, мне пришлось запустить командную строку с правами администратора.
в меню Пуск щелкните правой кнопкой мыши на командной строке, выберите "Запуск от имени администратора".
для меня эта ошибка была вызвана командной строкой, которая не работала под правами администратора. Вам нужно щелкнуть правой кнопкой мыши на командной строке и сказать"Запуск от имени администратора".
для установки или удаления службы требуется роль администратора.
Запустите командную строку разработчика "от имени администратора". Эта учетная запись имеет полный доступ к журналу безопасности
Не работает для меня.
Я создал новый ключ и строковое значение и сумел заставить его работать
Key= HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\<Your app name>\ String EventMessageFile value=C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll
для меня просто работал iisreset (запуск cmd от имени администратора -> iisreset). Может быть, кто-то мог бы попробовать.
если вы выполняете новую установку веб-сайта SenseNet TaskManagement на IIS (из исходного кода, а не WebPI), вы получите это сообщение, обычно связанное с связью SignalR. Как @nicole-caliniou указывает, это из-за поиска ключа в реестре, не удается.
чтобы решить эту проблему для SenseNet TaskManagement v1.1.0, сначала найдите имя раздела реестра в интернете.конфигурационный файл. По умолчанию это "SnTaskWeb".
<appSettings> <add key="LogSourceName" value="SnTaskWeb" />открыть реестр редактор,
regedit.exeи выберитеHKLM\SYSTEM\CurrentControlSet\Services\EventLog\SnTask. Щелкните правой кнопкой мыши на SnTask и выберитеNew Key, и именем ключSnTaskWebдля конфигурации, показанной выше. Затем щелкните правой кнопкой мыши наSnTaskWebэлемент и выберитеNew Expandable String Value. Имя должно бытьEventMessageFileи значение данных должно бытьC:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll.ключевые слова: signalr, sensenet, regedit, permissions
недоступные журналы: безопасность
новый источник событий должен иметь уникальное имя во всех журналах, включая безопасность (который нуждается в привилегии администратора, когда он читается).
Так что ваше приложение будет нужно привилегия admin для создания источника. Но это, наверное, перебор.
Я написал сценарий powershell для создания источника событий по желанию. Сохраните его как
*.ps1и запустить его с любой привилегия и она поднимет себя.# CHECK OR RUN AS ADMIN If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { $arguments = "& '" + $myinvocation.mycommand.definition + "'" Start-Process powershell -Verb runAs -ArgumentList $arguments Break } # CHECK FOR EXISTENCE OR CREATE $source = "My Service Event Source"; $logname = "Application"; if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) { [System.Diagnostics.EventLog]::CreateEventSource($source, $logname); Write-Host $source -f white -nonewline; Write-Host " successfully added." -f green; } else { Write-Host $source -f white -nonewline; Write-Host " already exists."; } # DONE Write-Host -NoNewLine 'Press any key to continue...'; $null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
Comments