分享
 
 
 

如何用在asp.net中写入事件日志

王朝asp·作者佚名  2006-01-30
窄屏简体版  字體: |||超大  

如何用asp

如何用asp.net写事件日志

来源:http://support.microsoft.com/default.aspx?scid=kb;en-us;329291

关键字:asp.net

事件日志 错误消息

重要事项

本文包含有关编辑注册表的信息。编辑注册表之前,务必先了解在发生问题时如何还原注册表。有关如何还原注册表的信息,请查看 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, 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, 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

更详尽的信息

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

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

2. 在WebForm1.aspx中的代码替换为以下代码:

Visual Basic .NET Sample

<%@ 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 Sample

<%@ 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. 按F5启动此项目。

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

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

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

EventLog.CreateEventSource(ev.Source,

"Application");

7. 重新启动此项目。

参考

要取得更详尽的信息,请访问微软网站:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbwlkWalkthroughCreatingEventLogInstallers.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdiagnosticseventlogclasstopic.asp

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有