我有一个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";
}
您可以使用更好的日志记录的方法,即100%的工作。见this Microsoft article。
不久上讲可以实现
YourExceptionLogger: ExceptionLogger
只用一个覆盖方法,并通过注册它
config.Services.Add(typeof(IExceptionLogger), new YourExceptionLogger());