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

如何用在ASP.NET中写入事件日志,第1张

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

现象

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

原因

运行asp net进程的默认怅户是ASPNET(在IIS 下面是NeorkService) 而此用户并没有权限来创建 事件来源

解决办法

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

第一个方法

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

  . 点击 开始 再点击 运行

  . 在 打开 框中输入 regedit

  . 找到下列子键

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application

  . 右击 Application 点击 新建 再点 项

  . 将此新建项重命名为 Test

  . 关闭注册表编辑器第二个方法

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

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

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

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

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

Visual Basic NET Sample

Imports System DiagnosticsImports System Configuration InstallImports System ComponentModel

<RunInstaller(True)> _Public Class MyEventLogInstallerInherits InstallerPrivate 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 Sampleusing Systemusing System Diagnosticsusing System ComponentModelusing System Configuration Install

namespace EventLogSourceInstaller {[RunInstaller(true)]public class MyEventLogInstaller : Installer{private EventLogInstaller myEventLogInstaller

public MyEventLogInstaller(){//Create Instance of EventLogInstallermyEventLogInstaller = new EventLogInstaller()

// Set the Source of Event Log to be created myEventLogInstaller Source = TEST

// Set the Log that source is created inmyEventLogInstaller Log = Application

// Add myEventLogInstaller to the Installers Collection Installers Add(myEventLogInstaller)}}} 

. 生成此项目 得到EventLogSourceInstaller dll

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

. 运行此命令来创建 事件来源 InstallUtil EventLogSourceInstaller dll

更详尽的信息

我们通过一个创建一个Web Application来重现以上错误以及解决此问题

. 使用VB Net或C#建立一个Asp net Web Application

. 在WebForm aspx中的代码替换为以下代码

Visual Basic NET Sample

<%@ Page Language= vb AutoEventWireup= true %><%@ Import namespace= System Diagnostics %><!DOCTYPE HTML PUBLIC //W C//DTD HTML 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 nameev Source = TEST

EventLog CreateEventSource(ev Source Application )

Tryev WriteEntry(TextBox Text)Catch b as exceptionResponse write ( WriteEntry &b message &<br> )End Tryev = NothingEnd Sub</script>

<body><form id= Form runat= server >Event message: <asp:textbox id= TextBox runat= server Width= px ></asp:textbox><asp:button id= Button onclick= WriteEvent_Click runat= server NAME= Button text= Write to event log ></asp:button></form></body></HTML>

Visual C# NET Sample<%@ Page Language= c# AutoEventWireup= true %><%@ Import namespace= System Diagnostics %><!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN ><HTML><script language= C# runat= server >void WriteEvent_Click(Object Src EventArgs e){EventLog ev = new EventLog( Application )// Event s Source nameev Source = TEST

EventLog CreateEventSource(ev Source Application )

try{ev WriteEntry(TextBox Text)}catch (Exception b){Response Write( WriteEntry + b Message + <br> )}ev = null}</script>

<body><form id= Form runat= server >Event message: <asp:textbox id= TextBox runat= server Width= px ></asp:textbox><asp:button id= Button onclick= WriteEvent_Click runat= server NAME= Button text= Write to event log ></asp:button></form></body></HTML> 

. 按F 启动此项目

. 在TextBox输入一些字符 然后点击Write to Event Log

. 在上面 现象 部分中提到的错误消息会出现

. 要解决此问题 在Webform aspx将下面这行代码注释

EventLog CreateEventSource(ev Source Application )

lishixinzhi/Article/program/net/201311/15435

首先这个牵扯到你客户量选择存储方式,既然是新手那就先从简单的数据库存储说起,以后的自己扩展。

1、创建个数据库表,就叫日志表(下面用log为表名)。字段{id(自增长)、title(操作标题)、details(操作详情)、addtime(添加时间)、url(当前地址)、Remarks(操作备注)、userid(用户id)}

2、写个全局公共添加log方法Addlog(参数)

3、在每个需要添加日志的地方调用你的方法就可以了。例如:你需要访问日志。那么你可以在你页面的公共方法里面调用该方法。又如:你需要获取客户点击添加按钮的方法,那么就在添加后添加日志,备注好title与details、userid等参数。

总之所有你需要的记录都是你自己做的记录。记录多了 日志自然就有了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/93724.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-07
下一篇2023-03-07

发表评论

登录后才能评论

评论列表(0条)

    保存