it-swarm.xyz

Источник не найден, но не удалось найти некоторые или все журналы событий

Я получаю следующее исключение. Я дал полный контроль над учетной записью Asp.net на Eventlogs в редактировании реестра.

[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

Я думаю, это связано с какой-то проблемой конфигурации на сервере?

112
Vaibhav Jain

EventLog.SourceExists перечисляет через подразделы HKLM\SYSTEM\CurrentControlSet\services\eventlog, чтобы увидеть, содержит ли он подраздел с указанным именем. Если учетная запись пользователя, под которой выполняется код, не имеет доступа на чтение к подразделу, к которому она пытается получить доступ (в вашем случае, к подразделу Security) до поиска целевого источника, вы увидите исключение, подобное описанному вами.

Обычный подход к решению таких проблем заключается в том, чтобы зарегистрировать источники журнала событий во время установки (под учетной записью администратора), а затем предположить, что они существуют во время выполнения, что позволяет рассматривать любое результирующее исключение как непредвиденное, если целевой источник журнала событий на самом деле не существует во время выполнения.

98
Nicole Calinoiu

Было то же исключение. В моем случае мне пришлось запустить командную строку с правами администратора. 

В меню «Пуск» щелкните правой кнопкой мыши командную строку и выберите «Запуск от имени администратора».

63
live-love

Для меня эта ошибка произошла из-за команды Prompt, которая не работала с правами администратора. Вам нужно щелкнуть правой кнопкой мыши по командной строке и сказать « Запуск от имени администратора ».

Для установки или удаления службы вам нужна роль администратора.

9
Raza

Запустите командную строку разработчика «Как администратор». Эта учетная запись имеет полный доступ к журналу безопасности

8
dmolisher

У меня не сработало.

Я создал новый ключ и строковое значение и сумел заставить его работать

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
6
Mike Hart

Если вы выполняете новую установку веб-сайта SenseNet TaskManagement на IIS (из исходного кода, а не из WebPI), вы получите это сообщение, обычно связанное с коммуникацией SignalR. Как указывает @ nicole-caliniou, это происходит из-за сбоя поиска по ключу в реестре. 

Чтобы решить эту проблему для SenseNet TaskManagement v1.1.0, сначала найдите имя раздела реестра в файле web.config. По умолчанию это «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.

Ключевые слова: сигнализатор, sensenet, regedit, разрешения

0
Thane Plummer

У меня просто работал iisreset (запускаю cmd от имени администратора -> iisreset). Может быть, кто-нибудь может попробовать. 

0
Miroslav Bihari

Недоступные журналы: безопасность

Новый источник событий должен иметь уникальное имя во всех журналах, включая Security (которому для чтения требуются права администратора).

Таким образом, вашему приложению потребуется привилегия администратора для создания источника. Но это, вероятно, излишество.

Я написал этот скрипт powershell для создания источника событий по желанию. Сохраните его как *.ps1 и запустите с привилегией any , и он поднимет себя.

# 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');
0
Bizhan