欢迎光临
我们一直在努力

如何用在ASP.NET中写入事件日志-.NET教程,Asp.Net开发

建站超值云服务器,限时71元/月

文包含有关编辑注册表的信息。编辑注册表之前,务必先了解在发生问题时如何还原注册表。有关如何还原注册表的信息,请查看 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”)
events 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”);
// events 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. 重新启动此项目。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 如何用在ASP.NET中写入事件日志-.NET教程,Asp.Net开发
分享到: 更多 (0)

相关推荐

  • 暂无文章