ASP.NET在异常发生时如何记录请求的URL?

3

我在日志文件中看到成千上万个"[2012/10/31 16:08:23] FATAL: 发生未处理的错误。 - Exception: 客户端检测到一个潜在的危险请求路径值 (%)。"。

我认为有人正在使用攻击工具尝试恶意请求。我无法在本地环境中重现它。

我在Global.asax中的Application_Error事件中记录此日志。

protected void Application_Error(object sender, EventArgs e)
{
    var ex = Server.GetLastError();
    if (null != ex)
    {
        Edi.Web.Logging.Logger.Fatal("An unhandled error occurred. ", ex);
    }
}

但是我该如何记录那些危险的“Request.Path”呢?

(在Application_BeginRequest中记录每个request.path并不是一个好的方法,我只想记录导致这个异常的那个)


1
只是为了添加更多信息,很少有人会“攻击”您的应用程序。当查询字符串中使用某些特殊字符并且您的应用程序可以通过允许在搜索查询中使用特殊字符来传递它们时,将引发此异常。请参见此处以获取更多信息。 - tucaz
1个回答

3
希望这正是您所需的:
protected void Application_Error(object sender, EventArgs e)
{        
    var ex = Server.GetLastError();
    if (null != ex)
    {
        Edi.Web.Logging.Logger.Fatal("An unhandled error occurred. " + "---Page:"
            + HttpContext.Current.Request.Url.ToString(), ex);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接