Otrzymuję następujący wyjątek. Dałem pełną kontrolę nad kontem Asp.net w dziennikach zdarzeń w edycji rejestru.
[SecurityException: Nie znaleziono źródła, ale nie można przeszukać niektórych lub wszystkich dzienników zdarzeń. Niedostępne dzienniki: zabezpieczenia.]
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
Myślę, że jest to spowodowane problemem z konfiguracją na serwerze?
Odpowiedzi:
EventLog.SourceExists
wylicza podklucze of,HKLM\SYSTEM\CurrentControlSet\services\eventlog
aby sprawdzić, czy zawiera podklucz o określonej nazwie. Jeśli konto użytkownika, na którym działa kod, nie ma dostępu do odczytu do podklucza, do którego próbuje uzyskać dostęp (w twoim przypadku,Security
podklucza) przed znalezieniem źródła docelowego, zobaczysz wyjątek podobny do tego, który opisałeś.Typowe podejście do rozwiązywania takich problemów polega na zarejestrowaniu źródeł dziennika zdarzeń w czasie instalacji (na koncie administratora), a następnie założeniu, że istnieją one w czasie wykonywania, dzięki czemu każdy wynikowy wyjątek może być traktowany jako nieoczekiwany, jeśli docelowe źródło dziennika zdarzeń w rzeczywistości nie istnieje W czasie wykonywania.
źródło
Miał ten sam wyjątek. W moim przypadku musiałem uruchomić wiersz polecenia z prawami administratora.
W menu Start kliknij prawym przyciskiem myszy Wiersz polecenia, wybierz opcję „Uruchom jako administrator”.
źródło
U mnie ten błąd był spowodowany wierszem poleceń, który nie działał z uprawnieniami administratora. Musisz kliknąć prawym przyciskiem myszy wiersz polecenia i powiedzieć „ Uruchom jako administrator ”.
Aby zainstalować lub odinstalować usługę, potrzebujesz roli administratora.
źródło
Uruchom wiersz poleceń programisty „Jako administrator”. To konto ma pełny dostęp do dziennika zabezpieczeń
źródło
Nie działa dla mnie.
Utworzyłem nowy klucz i wartość ciągu i udało mi się go uruchomić
źródło
U mnie właśnie działał iisreset (uruchom cmd jako administrator -> iisreset). Może ktoś mógłby spróbować.
źródło
Nowe źródło zdarzeń musi mieć unikalną nazwę we wszystkich dziennikach, w tym w zabezpieczeniach (które wymagają uprawnień administratora podczas odczytu).
Twoja aplikacja będzie więc potrzebować uprawnień administratora, aby utworzyć źródło. Ale to prawdopodobnie przesada.
Napisałem ten skrypt PowerShell, aby dowolnie tworzyć źródło zdarzeń. Zapisz go jako
*.ps1
i uruchom z dowolnymi uprawnieniami, a sam się podniesie.źródło
Niedawno doświadczyłem błędu i żadne z rozwiązań nie zadziałało. Rozwiązaniem problemu było dodanie użytkownika puli aplikacji do grupy Użytkownicy zaawansowani w zarządzaniu komputerem. Nie mogłem użyć grupy Administrator z powodu zasad firmy.
źródło
Jeśli wykonujesz nową instalację witryny sieci Web SenseNet TaskManagement w usługach IIS (z kodu źródłowego, a nie WebPI), zostanie wyświetlony ten komunikat, zwykle związany z komunikacją SignalR. Jak wskazuje @ nicole-caliniou, przyczyną jest niepowodzenie wyszukiwania klucza w rejestrze.
Aby rozwiązać ten problem w przypadku SenseNet TaskManagement v1.1.0, najpierw znajdź nazwę klucza rejestru w pliku web.config. Domyślnie jest to „SnTaskWeb”.
Otwórz edytor rejestru
regedit.exe
i przejdź doHKLM\SYSTEM\CurrentControlSet\Services\EventLog\SnTask
. Kliknij prawym przyciskiem myszy SnTask i wybierzNew Key
i nazwij kluczSnTaskWeb
dla konfiguracji pokazanej powyżej. Następnie kliknij prawym przyciskiem myszySnTaskWeb
element i wybierzNew Expandable String Value
. Nazwa powinna być,EventMessageFile
a dane wartości powinny byćC:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll
.Słowa kluczowe: sygnalizator, sensenet, regedit, uprawnienia
źródło
Jeśli chcesz tylko wąchać, czy Źródło istnieje na komputerze lokalnym, ale nie masz możliwości uzyskania autoryzacji, aby to zrobić, możesz przejrzeć je za pomocą następującego przykładu (VB).
To omija błąd bezpieczeństwa. Możesz w podobny sposób zmodyfikować tę funkcję, aby zwrócić LogName dla źródła.
źródło