当前位置:  开发笔记 > 编程语言 > 正文

在VS2008/Casini中开始调试时,为什么Application_Init会触发两次?

如何解决《在VS2008/Casini中开始调试时,为什么Application_Init会触发两次?》经验,为你挑选了1个好方法。

在VS2008/Casini中开始调试时,为什么Application_Init会触发两次?

是的,它发生在global.asax中.虽然看似相当随意,但偶尔只会发生一次.



1> Sunday Ironf..:

我假设您在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);
    }
}

基本上,多个HttpApplication实例被实例化以服务多个传入的HTTP请求.请求完成后,HttpApplication实例将返回池中再次重用,类似于数据库连接池.

您无法预测将创建多少个HttpApplication实例,基本上ASP.NET工作进程将创建所需数量,以满足来自Web应用程序的HTTP请求的需求.您的Application_Init()被调用两次,因为正在创建2个HttpApplication实例,即使它只是您运行您的网站.可能是您引入了HTML中的其他服务器端资源(JavaScript文件,CSS等),或者可能是Ajax请求.

如果要保证代码只运行一次,则将其放在Global.asax的Application_Start()方法中.或者使用Bootstrapper

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有