PRB: "meminta registri akses tidak diperbolehkan" kesalahan pesan ASP.Aplikasi NET mencoba untuk menulis EventSource baru dalam EventLog

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 329291 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

GEJALA

Ketika Anda menggunakan ASP.NET untuk membuat sumber acara baru dalam acara login, Anda akan menerima pesan galat berikut:
System.Security.SecurityException: Akses diminta registri adalah tidak diperbolehkan.

PENYEBAB

Secara default, pengguna tanda ASP.NET pekerja proses ASPNET (atau NetworkService untuk aplikasi yang berjalan pada layanan informasi Internet [IIS] 6.0). Masalah di Bagian "Gejala" terjadi karena account Anda tidak memiliki pengguna benar hak untuk menciptakan sumber peristiwa.

PEMECAHAN MASALAH

Penting Bagian ini, metode, atau tugas yang memuat langkah-langkah yang memberitahu Anda bagaimana memodifikasi registri. Namun, masalah serius mungkin muncul saat Anda memodifikasi registri salah. Oleh karena itu, pastikan Anda mengikuti langkah-langkah ini dengan hati-hati. Untuk perlindungan tambahan, buat cadangan registri sebelum Anda memodifikasinya. Kemudian, Anda dapat memulihkan registri apabila ada masalah. Untuk informasi lebih lanjut tentang cara membuat cadangan dan memulihkan registri, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
322756 Cara membuat cadangan dan memulihkan registri pada Windows
Untuk mengatasi masalah ini, pengguna yang telah administratif hak harus membuat sumber peristiwa sebelum Anda menjalankan ASP.Aplikasi NET Web. Untuk membuat sumber peristiwa, gunakan salah satu pendekatan berikut.

Pendekatan pertama

Membuat sumber peristiwa di bawah Aplikasi log peristiwa pada Peninjau Suntingan Registri. Untuk melakukannya, ikuti langkah berikut:
  1. Klik Mulai, lalu klikMenjalankan.
  2. Dalam Terbuka kotak teks, ketikRegedit.
  3. Cari subkunci registri berikut:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application
  4. Klik kanan Aplikasi subkunci, titik untuk Baru, lalu klik Kunci.
  5. Jenis TES untuk tombol Nama.
  6. Menutup Registry Editor.

Kedua pendekatan

The EventLogInstaller kelas di System.Diagnostics namespace memungkinkan Anda untuk menginstal dan mengkonfigurasi log peristiwa yang aplikasi Anda membaca dari atau menulis untuk sementara berjalan. Anda dapat membuat sumber peristiwa dengan menggunakan EventLogInstaller. Untuk melakukan hal ini, Ikuti langkah berikut:
  1. Menggunakan Microsoft Visual Basic.NET atau Microsoft Visual C#.NET untuk membuat yang baru Perpustakaan kelas bernama EventLogSourceInstaller. Secara default, Class1.VB file atauClass1.cs berkas dibuat.
  2. Dalam solusi Explorer, klik kananEventLogSourceInstaller, lalu klik Tambahkan Referensi.
  3. Dalam Menambahkan referensi kotak dialog, Klik dua kali System.Configuration.install.dll, lalu klikOke.
  4. Ubah nama Class1.vb\Class1.cs untuk MyEventLogInstaller.vb\MyEventLogInstaller.cs.
  5. Mengganti kode yang ada di MyEventLogInstaller.vb atau MyEventLogInstaller.cs dengan kode contoh berikut:

    Visual Basic .NET sampel
    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 
    
    Visual C#.NET sampel
    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. Pada Membangun menu, klik Membangun Solusi untuk membuatEventLogSourceInstaller.dll.
  7. Membuka Visual Studio.BERSIH Prompt perintah.
  8. Pada prompt perintah, mengubah ke folder di manaEventLogSourceInstaller.dll terletak.
  9. Jalankan perintah berikut untuk membuat EventSource:
    InstallUtil EventLogSourceInstaller.dll

INFORMASI LEBIH LANJUT

Langkah-langkah untuk mereproduksi perilaku

  1. Menggunakan Visual Basic.NET atau Visual C#.NET untuk membuat yang baruASP.Aplikasi NET Web. Secara default,WebForm1.aspx berkas dibuat.
  2. Dalam tampilan HTML WebForm1.aspx, menggantikan kode yang sudah ada dengan kode contoh berikut:

    Visual Basic.NET Sampel
    <%@ 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>
    
    Visual C#.NET sampel
    <%@ 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. Pada Debug menu, klikMulai untuk melihat WebForm1.aspx Halaman di browser.
  4. Ketik beberapa teks dalam TextBox, lalu klikMenulis ke log peristiwa.
  5. Pesan galat yang dibahas dalam "Gejala" bagian dari artikel ini muncul.
  6. Untuk mengatasi masalah ini, buat sumber peristiwa sebagai dibahas dalam bagian "pemecahan masalah", dan komentar kode berikut dalamWebForm1.aspx :
    EventLog.CreateEventSource(ev.Source, "Application")
  7. Ulangi langkah 3 dan 4.

REFERENSI

Untuk informasi lebih lanjut, kunjungi Website Microsoft berikut situs:
.aspx http://msdn2.Microsoft.com/en-us/library/f5dcf6h3 (vs.71)
.aspx http://msdn2.Microsoft.com/en-us/library/System.Diagnostics.EventLog (vs.71)

Properti

ID Artikel: 329291 - Kajian Terakhir: 03 Oktober 2011 - Revisi: 2.0
Berlaku bagi:
  • 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
Kata kunci: 
kberrmsg kbwebforms kbsecurity kbprb kbmt KB329291 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:329291

Berikan Masukan

 

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