在C#Web表单上的每个请求上运行的事件

时间:2015-07-09 06:52:55

标签: c# asp.net .net webforms

我需要在服务器上发出的每个请求之前或之后运行的事件。

如果该事件存在,我需要在该事件上运行一些代码。

例如:有人输入http://www.website.com/some-link

我需要在应用程序处理之前检查此链接。

我正在使用C#网络表单。

到目前为止,我试图在Global.asax.cs中找到事件,比如

protected virtual void Application_BeginRequest(object sender, EventArgs e)
{
    // need to track requested url
    // code that needs to be run with requested url.
}

这种情况有适当的解决方案吗?

TNX

1 个答案:

答案 0 :(得分:8)

正确的解决方案是使用事件Application_BeginRequest,除非你想复杂化并使用我不推荐的httpmodules。

protected virtual void Application_BeginRequest(object sender, EventArgs e)
{
    var url = Request.Url.AbsoluteUri;
    var path = Request.Url.AbsolutePath;
    var host = Request.Url.Host;

    // your magic goes here
}

正如一些信息所有事件的顺序是:

  • Application_BeginRequest
  • Application_AuthenticateRequest
  • Application_AuthorizeRequest
  • Application_ResolveRequestCache
  • Application_AcquireRequestState
  • Application_PreRequestHandlerExecute
  • Application_PreSendRequestHeaders
  • Application_PreSendRequestContent
    • 执行asp.net页面代码
  • Application_PostRequestHandlerExecute
  • Application_ReleaseRequestState
  • Application_UpdateRequestCache
  • Application_EndRequest