如何在ASP.NET中写入事件日志

2013 年 1 月 19 日4020

欢迎进入.NET社区论坛,与300万技术人员互动交流 >>进入

  文包含有关编辑注册表的信息。编辑注册表之前,务必先了解在发生问题时如何还原注册表。有关如何还原注册表的信息,请查看 Regedit.exe 中的“还原注册表”帮助主题,或 Regedt32.exe 中的“还原注册表项”帮助主题。

  现象

  当你使用asp.net 向事件日志中写入一个新的“事件来源”时,可能会得到如下错误消息: System.Security.SecurityException: 不允许所请求的注册表访问权

  原因

  运行asp.net进程的默认怅户是ASPNET(在IIS6.0下面是NetworkService),而此用户并没有权限来创建“事件来源”。

  解决办法

  注意:(编辑注册表会导致系统崩溃之类的微软吓你的话就不多说)。如果你需要解决此问题,在你运行此Asp.net程序之前,则必须要由具有管理员权限的用户来创建一个“事件来源”。下面有几个方法用来创建 “事件来源”。

  第一个方法

  使用下列步骤在注册表编辑中在”应用程序日志”下面创建一个“事件来源”

  1. 点击“开始”,再点击“运行”。

  2. 在“打开”框中输入“regedit”。

  3. 找到下列子键:

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\application

  4. 右击“Application”点击“新建”再点“项”

  5. 将此新建项重命名为“Test”

  6. 关闭注册表编辑器

  第二个方法

  在System.Diagnostics命名空间中有一个EventLogInstaller类。它能够创建和配置你的应用程序在运时要读写的事件日志。通过下列步骤,我们能够使用EventLogInstaller类来创建一个“事件业源”

  1. 用VB.NET或C#来创建一个名为EventLogSourceInstaller的“类库”。

  2. 在项目中添加对System.Configuration.Install.dll,的引用。

  3. 将自动产生的Class.Vb\Class.cs更命名为MyEventLogInstaller.vb\MyEventLogInstaller.cs。

  4. 在MyEventLogInstaller.vb 或 MyEventLogInstaller.cs中的内容替换为以下代码:

  Visual Basic .NET Sample

  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..\computer\DownloadFiles\article\27\, 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 Sample

  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..\computer\DownloadFiles\article\27\, 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);

  }

  }

  }

  5. 生成此项目,得到EventLogSourceInstaller.dll。

  6. 打开Visual Studio .NET 命令提示,转到EventLogSourceInstaller.dll所在目录。

  7. 运行此命令来创建“事件来源”:InstallUtil EventLogSourceInstaller.dll

[1][2]下一页

【责编:ivy】

0 0