ASP.Net默认情况下,是没有写系统日志的权限的。要在ASP.Net中写系统日志,首先我们要先有其权限。我们可以通过设置或修改注册表的权限来解决。
方法1:“开始->运行”,输入命令,“regedt32”,找到“System->CurrentControlSet->Services->Eventlog”,选择“安全->权限->添加”,然后找到本机的“AspNet”用户,加进来并且给读取权限就好了,加进来后目录中会多一个“aspnet_wp account”
方法2:在注册表:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Service/EventLog增加User的完全操纵权限
测试代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Diagnostics;
namespace testEventLog
{
/// <summary>
/// Summary description for Index.
/// </summary>
public class Index : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
EntrytoLog();
}
void EntrytoLog()
{
int[] array = new int[9];
try
{
for(int i = 0; i <= 9; i++)
{
array[i] = i;
Response.Write("The value of the i is :" + i + "<br>");
}
}
catch (Exception ex)
{
Index.Log("Town", ex.ToString());
}
}
public static void Log(string sourceName, string message)
{
EventLog eventLog = null;
// 确定日志是否存在
if (!(EventLog.SourceExists(sourceName)))
{
EventLog.CreateEventSource(sourceName, sourceName + "Log");
}
if (eventLog == null)
{
eventLog = new EventLog(sourceName + "Log");
eventLog.Source = sourceName;
}
// 记录日志信息
eventLog.WriteEntry(message, System.Diagnostics.EventLogEntryType.Error);
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}