Источник не найден, но не удалось найти некоторые или все журналы событий - PullRequest
115 голосов
/ 05 марта 2012

Я получаю следующее исключение. Я предоставил полный контроль над учетной записью 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 ]

100 голосов
/ 05 марта 2012

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

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

65 голосов
/ 09 августа 2013

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

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

9 голосов
/ 09 апреля 2014

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

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

8 голосов
/ 01 августа 2013

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

6 голосов
/ 02 февраля 2015

не работал для меня.

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

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
0 голосов
/ 12 сентября 2018

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

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

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

Я написал этот сценарий 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 голосов
/ 29 ноября 2016

Если вы выполняете новую установку веб-сайта 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 голосов
/ 08 мая 2015

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...