每次加载ASP.NET页面时都运行代码?

时间:2014-06-02 15:33:46

标签: asp.net logging

我必须更改现有的Web App以启用User Activity日志记录。在大多数情况下,每次有人访问页面时记录都很好。我们尝试从IIS日志中提取信息,但它记录了代理详细信息而不是登录的用户。

然后我考虑在每个表单的Page_Load上运行代码。唯一的问题是这个应用程序包含大约120个表单。我尝试通过执行搜索/替换来将代码放在基类中来更改继承,但后来我收到了数百条关于成员隐藏的警告。

还有另一种方法可以完成我想做的事吗?

2 个答案:

答案 0 :(得分:2)

将httpModule添加到您的应用程序中。每个请求都会触发模块,因此请在此处添加逻辑。

答案 1 :(得分:1)

您可以添加其中一个事件,以解决此问题。

然而,事件的顺序并不保证 - 例如BasePage.Load可能会在InheritedPage.Load之前或之后开火。

要更细化,请使用PreInitInit等..

第1步

查找/替换System.Web.UI.PageBasePage

第2步

将此课程添加到您的网络项目

public abstract class BasePage : System.Web.UI.Page
{
   // Assuming nlog
   private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

   protected BasePage()
   {
      this.Load += new EventHandler(LogPageLoad);
   }

   protected void LogPageLoad(object sender, EventArgs e)
   {
      Logger.Trace("Loading Page: {0}",  this.Title);
   }
}