UpT*_*eek 4 asp.net asp.net-mvc cassini visual-studio-2008
在VS2008/Casini中开始调试时,为什么Application_Init会触发两次?
是的,它发生在global.asax中.虽然看似相当随意,但偶尔只会发生一次.
我假设您在ASP.NET MVC应用程序中引用了Global.asax文件.请注意,您的global.asax扩展了System.Web.HttpApplication,例如:
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
// (snip)
}
protected void Application_Init()
{
// Why is this running twice?
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,多个HttpApplication实例被实例化以服务多个传入的HTTP请求.请求完成后,HttpApplication实例将返回池中再次重用,类似于数据库连接池.
您无法预测将创建多少个HttpApplication实例,基本上ASP.NET工作进程将创建所需数量,以满足来自Web应用程序的HTTP请求的需求.您的Application_Init()被调用两次,因为正在创建2个HttpApplication实例,即使它只是您运行您的网站.可能是您引入了HTML中的其他服务器端资源(JavaScript文件,CSS等),或者可能是Ajax请求.
如果要保证代码只运行一次,则将其放在Global.asax的Application_Start()方法中.或者使用Bootstrapper
| 归档时间: |
|
| 查看次数: |
3238 次 |
| 最近记录: |