我在使用自定义HTTPModule类将消息记录到EventViewer \ WindowsLogs时遇到问题。我已经尝试使用管理员权限运行Visual Studio,我也尝试从IIS 6.0。它不会崩溃,它只是不添加任何代码。下面是模块类和配置文件。
HTTP模块
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Diagnostics;
namespace Chapter_V.HttpModules
{
public class MyHttpModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.AuthenticateRequest += new EventHandler(OnAuthentication);
}
private void OnAuthentication(object sender, EventArgs e)
{
string name = HttpContext.Current.User.Identity.Name;
EventLog log = new EventLog();
log.Source = "My First HttpModule";
log.WriteEntry(name + " was authenticated !");
}
public void Dispose()
{
}
}
}
的web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<httpModules>
<add name="MyHttpModule" type="Chapter_V.HttpModules.MyHttpModule,ChapterV"/>
</httpModules>
</system.web>
<system.webServer>
<modules>
<add name="MyHttpModule" type="Chapter_V.HttpModules.MyHttpModule,ChapterV"/>
</modules>
</system.webServer>
</configuration>
你对这个问题有任何想法吗? (这仅用于研究目的)
答案 0 :(得分:0)
如果应用程序池上的用户标识具有创建事件日志条目的权限。 尝试运行以下脚本:
eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO "My First HttpModule" /D "My first log"
这将在APPLICATION事件日志下创建一个名为“My First HttpModule”的新事件源作为INFORMATION事件类型。
不确定原因的确切原因,但在事件日志中必须已存在(可创建),然后才能在代码中使用。