自定义httpModule未记录到Windows日志

时间:2014-03-03 20:14:32

标签: asp.net httpmodule

我在使用自定义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>

你对这个问题有任何想法吗? (这仅用于研究目的)

1 个答案:

答案 0 :(得分:0)

如果应用程序池上的用户标识具有创建事件日志条目的权限。 尝试运行以下脚本:

eventcreate /ID 1 /L APPLICATION /T INFORMATION  /SO "My First HttpModule" /D "My first log"

这将在APPLICATION事件日志下创建一个名为“My First HttpModule”的新事件源作为INFORMATION事件类型。

不确定原因的确切原因,但在事件日志中必须已存在(可创建),然后才能在代码中使用。

Source of information is here