文包含有关编辑注册表的信息。编辑注册表之前,务必先了解在发生问题时如何还原注册表。有关如何还原注册表的信息,请查看 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 <RunInstaller(True)> _ Public Sub New() Visual C# .NET Sample public MyEventLogInstaller() // Set the Source of Event Log..\computer\DownloadFiles\article\27\, to be created. // Set the Log that source is created in // Add myEventLogInstaller to the Installers Collection. 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 EventLog.CreateEventSource(ev.Source..\computer\DownloadFiles\article\27\, “Application”) Try <body> Visual C# .NET Sample EventLog.CreateEventSource(ev.Source..\computer\DownloadFiles\article\27\, “Application”); try <body> 3. 按F5启动此项目。 4. 在TextBox输入一些字符,然后点击Write to Event Log。 5. 在上面“现象”部分中提到的错误消息会出现。 6. 要解决此问题,在Webform1.aspx将下面这行代码注释 7. 重新启动此项目。 http://www.cnblogs.com/niit007/archive/2006/08/13/475510.html
现象
Imports System.Diagnostics
Imports System.Configuration.Install
Imports System.ComponentModel
Public Class MyEventLogInstaller
Inherits Installer
Private myEventLogInstaller As EventLogInstaller
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
using System;
using System.Diagnostics;
using System.ComponentModel;
using System.Configuration.Install;
namespace EventLogSourceInstaller
{
[RunInstaller(true)]
public class MyEventLogInstaller : Installer
{
private EventLogInstaller myEventLogInstaller;
{
//Create Instance of EventLogInstaller
myEventLogInstaller = new EventLogInstaller();
myEventLogInstaller.Source = “TEST”;
myEventLogInstaller.Log = “Application”;
Installers.Add(myEventLogInstaller);
}
}
}
<%@ 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”)
Events Source name
ev.Source = “TEST”
ev.WriteEntry(TextBox1.Text)
Catch b as exception
Response.write (“WriteEntry ” & b.message & “<br>”)
End Try
ev = Nothing
End Sub
</script>
<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>
<%@ 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”);
// Events Source name
ev.Source = “TEST”;
{
ev.WriteEntry(TextBox1.Text);
}
catch (Exception b)
{
Response.Write(“WriteEntry ” + b.Message + “<br>”);
}
ev = null;
}
</script>
<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>
EventLog.CreateEventSource(ev.Source..\computer\DownloadFiles\article\27\, “Application”);
如何用在asp.net中写入事件日志_asp.net技巧
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 如何用在asp.net中写入事件日志_asp.net技巧
相关推荐
-      对.net framework 反射的反思_asp.net技巧
-      .net3.5和vs2008中的asp.net ajax_asp.net技巧
-      使用asp.net ajax框架扩展html map控件_asp.net技巧
-      asp.net应用程序资源访问安全模型_asp.net技巧
-      photoshop初学者轻松绘制螺旋漩涡特效_photoshop教程
-      photoshop通道结合图层模式抠狗尾巴草_photoshop教程
-      web.config详解+asp.net优化_asp.net技巧
-      asp.net中多彩下拉框的实现_asp.net技巧