HTTP模块错误事件不触发

问题描述 投票:2回答:1

我有一个Asp.Net的Web API项目,我想创建记录错误的简单IHttpModule

该模块被加载正确的,因为我可以注册到的BeginRequest / EndRequest事件。但是,永远不会触发错误事件。

我还添加和删除从runAllManagedModulesForAllRequests="true"web.config属性,但仍然没有效果。

public class ErrorLogModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.Error += Context_Error;
    }

    // method never triggered
    private void Context_Error(object sender, EventArgs e)
    {
        HttpContext ctx = HttpContext.Current;
        Exception exception = ctx.Server.GetLastError();

        // todo
        // log Exception
    }

    public void Dispose()
    {

    }
}

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="ErrorLogger" type="HttpModules.HttpModules.ErrorLogModule" />
  </modules>
</system.webServer>

[HttpGet]
[Route("triggerError")]
public string TriggerError()
{
    int test = 0;
    var a = 1 / test;

    return "Hello Workd";
}
asp.net asp.net-web-api httpmodule ihttpmodule
1个回答
0
投票

您可以使用更好的日志记录的方法,即100%的工作。见this Microsoft article

不久上讲可以实现

YourExceptionLogger: ExceptionLogger

只用一个覆盖方法,并通过注册它

config.Services.Add(typeof(IExceptionLogger), new YourExceptionLogger());
© www.soinside.com 2019 - 2024. All rights reserved.