Estou recebendo a seguinte exceção. Dei controle total à conta Asp.net nos logs de eventos na edição do Registro.
[SecurityException: a fonte não foi encontrada, mas alguns ou todos os logs de eventos não puderam ser pesquisados. Logs inacessíveis: Segurança.]
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
Eu acho que isso é devido a algum problema de configuração no servidor?
Respostas:
EventLog.SourceExists
enumera através das subchaves deHKLM\SYSTEM\CurrentControlSet\services\eventlog
para ver se ele contém uma subchave com o nome especificado. Se a conta de usuário sob a qual o código está sendo executado não tiver acesso de leitura a uma subchave que ele tenta acessar (no seu caso, aSecurity
subchave) antes de encontrar a fonte de destino, você verá uma exceção como a que você descreveu.A abordagem usual para lidar com esses problemas é registrar fontes de log de eventos no momento da instalação (em uma conta de administrador) e assumir que elas existem no tempo de execução, permitindo que qualquer exceção resultante seja tratada como inesperada se uma fonte de log de eventos de destino não existir realmente em tempo de execução.
fonte
Teve a mesma exceção. No meu caso, tive que executar o prompt de comando com direitos de administrador.
No menu Iniciar, clique com o botão direito do mouse em Prompt de Comando, selecione "Executar como administrador".
fonte
Para mim, esse erro ocorreu devido ao prompt de comando, que não estava sendo executado sob privilégios de administrador. Você precisa clicar com o botão direito do mouse no prompt de comando e dizer " Executar como administrador" ".
Você precisa da função de administrador para instalar ou desinstalar um serviço.
fonte
Inicie a linha de comando do desenvolvedor "Como administrador". Esta conta tem acesso total ao log de segurança
fonte
Não funcionou para mim.
Criei um novo valor de chave e sequência e consegui fazê-lo funcionar
fonte
Para mim, apenas funcionou o iisreset (execute o cmd como administrador -> iisreset). Talvez alguém possa tentar.
fonte
Uma nova fonte de eventos precisa ter um nome exclusivo em todos os logs, incluindo Segurança (que precisa de privilégio de administrador durante a leitura).
Portanto, seu aplicativo precisará de privilégio de administrador para criar uma fonte. Mas isso é provavelmente um exagero.
Eu escrevi esse script do PowerShell para criar a fonte do evento à vontade. Salve-o como
*.ps1
e execute-o com qualquer privilégio e ele se elevará.fonte
Recentemente, experimentei o erro e nenhuma das soluções funcionou para mim. O que resolveu o erro para mim foi adicionar o usuário do pool de aplicativos ao grupo Usuários avançados no gerenciamento de computadores. Não pude usar o grupo Administrador devido a uma política da empresa.
fonte
Se você estiver executando uma nova instalação do site do SenseNet TaskManagement no IIS (do código-fonte, não do WebPI), receberá essa mensagem, geralmente relacionada à comunicação do SignalR. Como o @ nicole-caliniou aponta, é devido a uma pesquisa chave no Registro que falha.
Para resolver isso no SenseNet TaskManagement v1.1.0, localize primeiro o nome da chave do registro no arquivo web.config. Por padrão, é "SnTaskWeb".
Abra o editor de registro
regedit.exe
e navegue atéHKLM\SYSTEM\CurrentControlSet\Services\EventLog\SnTask
. Clique com o botão direito do mouse em SnTaskNew Key
, selecione e nomeie a chaveSnTaskWeb
da configuração mostrada acima. Em seguida, clique com o botão direito do mouse noSnTaskWeb
elemento e selecioneNew Expandable String Value
. O nome deve serEventMessageFile
e os dados do valor devem serC:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll
.Palavras-chave: signalr, sensenet, regedit, permissões
fonte
Se você deseja apenas detectar se existe uma fonte na máquina local, mas não tem a capacidade de obter autorização para fazer isso, você pode digitá-la no exemplo a seguir (VB).
Isso ignora o erro de segurança. Da mesma forma, você pode modificar essa função para retornar o LogName da origem.
fonte