加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 为什么在VS2008 / Casini中开始调试时Application_In

发布时间:2020-12-16 06:43:33 所属栏目:asp.Net 来源:网络整理
导读:在VS2008 / Casini中开始调试时,为什么Application_Init会触发两次? 是的,它发生在global.asax中.虽然看似相当随意,但偶尔只会发生一次. 解决方法 我假设您在ASP.NET MVC应用程序中引用了Global.asax文件.请注意,您的global.asax扩展了System.Web.HttpAppli
在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);
    }
}

基本上是multiple HttpApplication instances are being instantiated to serve multiple incoming HTTP requests.请求完成后,HttpApplication实例将返回池中再次重用,类似于数据库连接池.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读