PRB: Mensagem de erro "Acesso ao registro solicitado não é permitido" Quando ASP.NET aplicativo tenta escrever novo EventSource o log de eventos

Traduções de Artigos Traduções de Artigos
Artigo: 329291 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando você usa ASP.NET para criar uma nova fonte de evento no log de eventos, você pode receber a seguinte mensagem de erro:
System.Security.SecurityException: Acesso ao registro solicitado é não é permitido.

Causa

Por padrão, o token de usuário do processo do operador ASP.NET é ASPNET (ou NetworkService para aplicativos executados no Internet Information Services IIS [] 6.0). O problema do Seção "Sintomas" ocorre porque sua conta não tem o usuário correto direitos para criar uma fonte de evento.

Resolução

Importante Esta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, podem ocorrer problemas graves se modificar o Registro incorretamente. Portanto, certifique-se de seguir estas etapas cuidadosamente. Para maior proteção, faça backup do registro antes de modificá-lo. Em seguida, você poderá restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
322756 Como fazer backup e restaurar o registro no Windows
Para resolver esse problema, um usuário que tenha administrativo direitos devem criar a fonte de eventos antes de executar o aplicativo da Web ASP.NET. Para criar uma fonte de evento, use um dos seguintes métodos.

Primeira abordagem

Crie uma fonte de evento em log de eventos do aplicativo no Editor do registro. Para fazer isso, siga estes passos:
  1. Clique em Iniciare clique emExecutar.
  2. No Abrir caixa de texto, digiteRegedit.
  3. Localize a seguinte subchave do registro:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application
  4. Com o botão direito do Aplicação subchave, ponto para Novoe clique em Chave.
  5. Digite TESTE a chave nome.
  6. Feche o Editor do registro.

Segunda abordagem

A classe EventLogInstaller no namespace System. Diagnostics permite instalar e configurar um log de eventos que seu aplicativo lê ou grava enquanto em execução. Você pode criar uma fonte de evento usando EventLogInstaller. Para fazer isso, Siga estas etapas:
  1. Use o Microsoft Visual Basic .NET ou Microsoft Visual C# .NET para criar um novo Biblioteca de classe chamado EventLogSourceInstaller. Por padrão, o Class1. vb arquivo ou oClass1. cs arquivo é criado.
  2. No Solution Explorer, clique com o botão direitoEventLogSourceInstallere clique em Adicionar Referências.
  3. No Adicionar referência caixa de diálogo Clique duas vezes System.Configuration.Install.dlle clique emOK.
  4. Renomeie Class1.vb\Class1.cs para MyEventLogInstaller.vb\MyEventLogInstaller.cs.
  5. Substitua o código existente no MyEventLogInstaller.vb ou MyEventLogInstaller.cs com o exemplo de código a seguir:

    Visual Basic Exemplo .NET
    Imports System.Diagnostics
    Imports System.Configuration.Install
    Imports System.ComponentModel
    
    <RunInstaller(True)> _
    Public Class MyEventLogInstaller
        Inherits Installer
        Private myEventLogInstaller As EventLogInstaller
    
        Public Sub New()
            ' Create an instance of 'EventLogInstaller'.
            myEventLogInstaller = New EventLogInstaller()
            ' Set the 'Source' of the event log, to be created.
            myEventLogInstaller.Source = "TEST"
            ' Set the 'Log' that the source is created in.
            myEventLogInstaller.Log = "Application"
            ' Add myEventLogInstaller to 'InstallerCollection'.
            Installers.Add(myEventLogInstaller)
        End Sub 
    End Class 
    
    Exemplo do Visual C# .NET
    using System;
    using System.Diagnostics;
    using System.ComponentModel;
    using System.Configuration.Install;
    
    
    namespace EventLogSourceInstaller 
    {
    	[RunInstaller(true)]
    	public class MyEventLogInstaller : Installer
    	{
    		private EventLogInstaller myEventLogInstaller;
    
    		public MyEventLogInstaller()
    		{
    			//Create Instance of EventLogInstaller
    			myEventLogInstaller = new EventLogInstaller();
    
    			// Set the Source of Event Log, to be created.
    			myEventLogInstaller.Source = "TEST";
    
    			// Set the Log that source is created in
    			myEventLogInstaller.Log = "Application";
    			
    			// Add myEventLogInstaller to the Installers Collection.
    			Installers.Add(myEventLogInstaller);
    		}
    	}
    }
    
    
  6. Sobre o Compilação menu, clique em Compilação Solução para criarEventLogSourceInstaller.dll.
  7. Abra o Prompt de comando do Visual Studio .NET.
  8. No prompt de comando, altere para a pasta ondeEventLogSourceInstaller.dll está localizado.
  9. Execute o seguinte comando para criar a EventSource:
    InstallUtil EventLogSourceInstaller.dll

Mais Informação

Passos para reproduzir o comportamento

  1. Use Visual Basic .NET ou Visual C# .NET para criar um novoAplicativo da Web ASP.NET. Por padrão,WebForm1 arquivo é criado.
  2. No modo de exibição HTML do WebForm1, substitua o código existente com o código de exemplo a seguir:

    Visual Basic .NET Amostra
    <%@ Page Language="vb" AutoEventWireup="true" %>
    <%@ Import namespace="System.Diagnostics" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    	<script language="VB" runat="server">
    	Sub WriteEvent_Click(Src As Object, e As EventArgs)
    	Dim ev As New EventLog("Application")
    	' Event's Source name
    	ev.Source = "TEST" 
    	
    	EventLog.CreateEventSource(ev.Source, "Application")
    	
    Try
    	 ev.WriteEntry(TextBox1.Text)
    	Catch b as exception
    	 Response.write ("WriteEntry " & b.message & "<br>")
    	End Try
    	ev = Nothing
    	End Sub
    	</script>
    
    	<body>
    		<form id="Form1" runat="server">
    			Event message: 
    			<asp:textbox id="TextBox1" runat="server" Width="233px"></asp:textbox>
    			<asp:button id="Button1" onclick="WriteEvent_Click" runat="server" NAME="Button1" text="Write to event log"></asp:button>
    		</form>
    	</body>
    </HTML>
    
    Exemplo do Visual C# .NET
    <%@ Page Language="c#" AutoEventWireup="true" %>
    <%@ Import namespace="System.Diagnostics" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    	<script language="C#" runat="server">
    	void WriteEvent_Click(Object Src, EventArgs e)
    	{
    	EventLog ev = new EventLog("Application");
    	// Event's Source name
    	ev.Source = "TEST";  
    	
    	EventLog.CreateEventSource(ev.Source, "Application");
    
    			try
    			{
    				ev.WriteEntry(TextBox1.Text);
    			}
    			catch (Exception b)
    			{
    				Response.Write("WriteEntry " + b.Message + "<br>");
    			}
    			ev = null;
    	}
    	</script>
    
    	<body>
    		<form id="Form1" runat="server">
    			Event message: 
    			<asp:textbox id="TextBox1" runat="server" Width="233px"></asp:textbox>
    			<asp:button id="Button1" onclick="WriteEvent_Click" runat="server" NAME="Button1" text="Write to event log"></asp:button>
    		</form>
    	</body>
    </HTML>
  3. Sobre o Debug menu, clique emIniciar Para exibir o WebForm1 página do navegador.
  4. Digite algum texto no Caixa de textoe clique emGravar no log de eventos.
  5. Mensagem de erro que é discutida em "Sintomas" seção deste artigo é exibida.
  6. Para resolver esse problema, crie uma fonte de evento como discutido na seção "Resolução" e comentar o código a seguir noWebForm1 :
    EventLog.CreateEventSource(ev.Source, "Application")
  7. Repita as etapas 3 e 4.

Referências

Para obter mais informações, visite o seguinte Microsoft Web sites:
. aspx http://msdn2.microsoft.com/en-us/library/f5dcf6h3 (vs.71)
. aspx http://msdn2.microsoft.com/en-us/library/System.Diagnostics.EventLog (vs.71)

Propriedades

Artigo: 329291 - Última revisão: 30 de setembro de 2012 - Revisão: 4.0
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Internet Information Services 6.0
Palavras-chave: 
kberrmsg kbwebforms kbsecurity kbprb kbmt KB329291 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 329291

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com