我在一个ASP.NET MVC项目的global.asax.cs
中看到
protected void Application_BeginRequest()
{
}
但是,当我尝试将这个方法添加到我的项目中时,我没有看到调用此方法的内容。我看到基本的System.Web.HttpApplication
有此事件,但我没有看到任何重写它或订阅此事件的内容。
有人能解释一下在ASP.NET MVC中如何连接 Application_BeginRequest
吗?
我在一个ASP.NET MVC项目的global.asax.cs
中看到
protected void Application_BeginRequest()
{
}
但是,当我尝试将这个方法添加到我的项目中时,我没有看到调用此方法的内容。我看到基本的System.Web.HttpApplication
有此事件,但我没有看到任何重写它或订阅此事件的内容。
有人能解释一下在ASP.NET MVC中如何连接 Application_BeginRequest
吗?
恐怕Cos的回答并不是完全准确的。你不需要进行连线,因为基础的HttpApplication
类会代替你完成这个过程。这里没有接口或重写;HttpApplication
使用反射根据方法名将这些方法连接到事件上。因此,这是一种基于约定的魔法,已经在框架中存在了一段时间。这很奇怪,我认为他们只是为了维护与Classic ASP的相似之处以及提供一种避免编写许多小HttpModule
的快捷方式。
对于好奇的人,可以在Reflector中加载HttpApplication
并查找HookupEventHandlersForApplicationAndModules()
方法。或者,加载HttpApplicationFactory
并查看ReflectOnApplicationType()
和ReflectOnMethodInfoIfItLooksLikeEventHandler()
(喜欢这个名称!)方法。
这是您真正需要了解以使用ASP.NET吗?不是必须的,但知道它肯定可以消除一些神秘感。
Page_Load
和Page_Init
吗? - Jalalpublic class Global : System.Web.HttpApplication
(你可以在global.asax中找到它)的对象(或类)。HttpApplication thisAspApp = new YourASPApplication()
thisApplication.Begin_Request()