PRB: 要求的登錄存取不允許] 時出現錯誤訊息 ASP.NET 應用程式嘗試在 [EventLog 中撰寫新 EventSource

文章翻譯 文章翻譯
文章編號: 329291 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

使用 ASP.NET 在事件記錄檔中建立新的事件來源時您可能會收到下列錯誤訊息:
System.Security.SecurityException: 不允許要求的登錄權限。

發生的原因

預設情況下,ASP.NET 工作者處理序的使用者語彙基元會是 ASPNET (或在網際網路資訊服務 [IIS] 6.0 執行的應用程式的 NetworkService)。您的帳戶沒有正確的使用者在建立事件來源的權限,就會發生 < 徵狀 > 一節中的問題。

解決方案

重要這個區段、 方法或任務包含告訴您如何修改登錄的步驟。然而,如果您不當修改登錄,可能會發生嚴重的問題。因此,執行這些步驟時請務必小心。為加強保護,修改登錄之前,請務必將它備份起來。以後您就可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756如何備份和還原在 Windows 登錄
如果要解決這個問題,具有系統管理權限的使用者必須建立事件來源,才能執行 ASP.NET Web 應用程式。 若要建立事件來源,請使用下列方法之一。

第一個方法

在 [登錄編輯程式] 中建立事件來源下 應用程式 事件日誌。要這麼做,請您執行下列步驟:
  1. 按一下 [開始],然後按一下 [執行]。
  2. 開啟 的 [文字] 方塊中,鍵入 regedit
  3. 找出下列登錄子機碼:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application
  4. 應用程式 子機碼上按一下滑鼠右鍵,指向 [新增],然後再按一下 [索引鍵
  5. 型別 測試 機碼名稱。
  6. 關閉 [登錄編輯程式]。

第二個方法

命名命名空間中的 EventLogInstaller 類別可以讓您安裝並設定您的應用程式從讀取或寫入,而執行的事件記錄檔。您可以使用 EventLogInstaller 來建立事件來源。要這麼做,請您執行下列步驟:
  1. 使用 Microsoft Visual Basic.NET 或 Microsoft Visual C#.NET 在建立新的 類別庫 命名 EventLogSourceInstaller。 預設情況下,被建立 Class1.vb 檔案或 Class1.cs 檔案。
  2. 在 [方案總管] 中 EventLogSourceInstaller,] 上按一下滑鼠右鍵,然後按一下 [加入參考]。
  3. 在 [加入參考] 對話方塊連按兩下 System.Configuration.Install.dll,],然後再按 [確定]]。
  4. 重新命名 MyEventLogInstaller.vb\MyEventLogInstaller.cs [Class1.vb\Class1.cs。
  5. 以下列的範例程式碼取代 MyEventLogInstaller.vb 或 MyEventLogInstaller.cs 中現有的程式碼:

    視覺化基本的.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 
    
    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. 建置] 功能表上按一下 [建置方案],以建立 EventLogSourceInstaller.dll]。
  7. 開啟 [Visual Studio.NET 命令提示字元]。
  8. 在命令提示字元下變更至 EventLogSourceInstaller.dll 所在的資料夾。
  9. 執行下列命令,建立 [EventSource:
    InstallUtil EventLogSourceInstaller.dll

其他相關資訊

重製行為的步驟

  1. 若要使用 Visual Basic.NET 或 Visual C#.NET,請以建立新的 ASP.NET Web 應用程式。預設情況下,會建立 WebForm1.aspx 檔案。
  2. 在的 WebForm1.aspx 的 [HTML] 檢視請以下列的範例程式碼取代現有的程式碼:

    Visual Basic.NET 範例
    <%@ 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 範例
    <%@ 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. 在 [偵錯] 功能表上按一下 [[開始],以在瀏覽器中檢視 的 WebForm1.aspx 頁面]。
  4. TextBox 中, 輸入一些文字,然後按一下 [寫入事件記錄檔
  5. 錯誤訊息,將會討論這份文件的區段會出現在 < 徵狀 > 一節。
  6. 如果要解決這個問題,建立事件來源,如 < 解決方案 >] 一節所討論,並加上註解下列程式碼中 的 WebForm1.aspx
    EventLog.CreateEventSource(ev.Source, "Application")
  7. 重複步驟 3 和 4。

?考

如需詳細資訊請造訪下列 Microsoft 網站]:
http://msdn2.microsoft.com/en-us/library/f5dcf6h3(vs.71).aspx
http://msdn2.microsoft.com/en-us/library/system.diagnostics.eventlog(vs.71).aspx

屬性

文章編號: 329291 - 上次校閱: 2007年12月3日 - 版次: 2.10
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 標準版
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Services version 5.1
  • Microsoft Internet Information Services 6.0
關鍵字:?
kbmt kberrmsg kbwebforms kbsecurity kbprb KB329291 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:329291
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

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