首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> ASP.NET技巧 -> 如何用在ASP.NET中写入事件日志
如何用在ASP.NET中写入事件日志


文章类别:ASP.NET技巧 来源: 作者: 发表日期:2006-8-15 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

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

  更详尽的信息

  我们通过一个创建一个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..\computer\DownloadFiles\article\27\, e As EventArgs)
Dim ev As New EventLog("Application")
' Event's Source name
ev.Source = "TEST"

EventLog.CreateEventSource(ev.Source..\computer\DownloadFiles\article\27\, "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..\computer\DownloadFiles\article\27\, EventArgs e)
{
EventLog ev = new EventLog("Application");
// Event's Source name
ev.Source = "TEST";

EventLog.CreateEventSource(ev.Source..\computer\DownloadFiles\article\27\, "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..\computer\DownloadFiles\article\27\, "Application");

  7. 重新启动此项目。

http://www.cnblogs.com/niit007/archive/2006/08/13/475510.html

上一篇:ASP.NET实现下载功能的中文文件名乱码处理 下一篇:ASP.net 验证码(C#)
本栏目热门文章
·如何实现无刷新的DropdownList联动效果 2005-10-4
·使用HttpWebRequest向网站模拟上传数据 2005-10-4
·ASP.NET中文件上传下载方法集合 2006-5-28
·当DataSet中包含主/子表时,Update更新步骤 2005-10-6
·ASP.NET2.0实现无刷新客户端回调 2005-11-13
·分享个极好的无刷新二级联动下拉列表,同样适用与firefox 2005-10-19
·在Web DataGrid中当鼠标移到某行与离开时行的颜色发生改变( 2005-10-4
·ASP.NET中实现Flash与.NET的紧密集成 2005-11-21
·关于Asp.net页面Page_Load被执行两次的问题 2005-10-4
·ASP.NET极限:页面导航 (翻译) 2005-10-8
新近更新文章
·.Net下几种日志管理方法 2006-8-23
·支持正则表达式的UrlMapping(ASP.NET2.0) 2006-8-23
·ASP.NET2.0登陆控件的使用(常见的三种方法) 2006-8-23
·ASP.NET 2.0 X64的奇怪问题 2006-8-23
·ASP.NET 2.0 - Enter Key - Default 2006-8-23
·怎样从ASP.NET 2.0中读取连接字符串的设置 2006-8-23
·一个极有可能引发ExecutionEngineException的情 2006-8-23
·用gridview显示来自excel表格里的数据 2006-8-23
·ASP.NET服务器控件PleaseWaitButton[翻译] 2006-8-23
·ASP.NET 2.0 WebService中传递DataTable 2006-8-23
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: