Application_Start

这个时间是在第一次访问网站的时候触发..
比如你发布了一个网站,,
我第一个来访问,,就会触发这个事件..
以后再有人来访问就不会触发了..

一般的,我们总是以为Application_Start是一个应用程序最开始的部分,所有我们自己写的代码的执行,都从这里开始,而所有这里以前的代码,都是微软(或者其他系统商)的代码. 尤其对一个曾经因为要调试一个Windows服务的Start事件而深深痛苦的人来说,这种感觉更加明显. 要知道,在Application_Start执行前,甚至任务管理器的进程列表里面也找不到你的程序进程.

但是事实往往不是想象的那样,偶尔不经意的一句看似无关全局的代码,却偏偏跑到Application_Start前面去了,而一句执行在应用程序初始化以前的代码,可能引发的一系列连锁反应,是毁灭性的后果.

如果简单思考一下,大家应该都想得起来,有一种代码是注定在前面执行的~~~ 这就是静态字段初始化代码,这是语言语法要求的,必须在所有代码之前,这"所有"的代码,包括系统商的代码,而系统商的代码用以启动这个Application_Start,自然静态字段初始化会发生在Application_Start之前,如果我们的初始化过程使用了全局的未初始化的资源,则会引发异常,而这个异常可能被全局异常机制处理,但是这个异常机制本身的状态都尚未初始化结束(往往因为它的状态是需要配置的,因此在
Application_Start里进行初始化)~~~ 这就引起一系列连锁反应,最终,程序整个挂掉了,因为一个可能无关痛痒的,可能一直不会用到的静态字段....
所以,慎用!!

Application_Start

时间: 2024-10-09 18:33:49

Application_Start的相关文章

Application_Start和Application_End事件执行时间

Application_start: 第一个访问网站的用户会触发该方法. 通常会在该方法里定义一些系统变量,如聊天室的在线总人数统计,历史访问人数统计的初始化等等均可在这里定义. Application_end:网站关闭,或重启时,会触发该方法.Session_start : 每个用户访问网站的第一个页面时触发; Session_end:使用了session.abandon(),或session超时用户退出后均可触发. 这么来说吧,当你的IIS配置好了,第一个人,第一次访问你这个网站的时候,两个

global文件中的application_start方法中做: 定时器

<%@ Application Language="C#" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.SqlClient" %> <%@ import Namespace="System.Collections" %> <%@ Import Namespace=&qu

关于Application_End 与 Application_Start事件触发情况的测试(待续)

测试项目搭建 定义一个简单的Mvc项目,有如下文件: (1) public class Startup { public void Configuration(IAppBuilder app) { app.Run(context => { return Task.Run( async () => { await Task.Delay(600); await context.Response.WriteAsync("Hello, world." + context.Reque

Entity Framework 6 Recipes 2nd Edition(9-3)译-&gt;找出Web API中发生了什么变化

9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Frist实现数据访问管理. 本例,我们模拟一个N层场景,用单独的客户端(控制台应用)来调用单独的基于REST服务的Web网站(WEB API应用) . 注意:每层使用单独的Visual Studio 解决方案, 这样更方便配置.调试和模拟一个N层应用. 假设有一个如Figure 9-3所示的旅行社和预订

Global.asax文件说明

Global.asax是我们的底层文件,第一次的IIS请求都会先去执行它里面的文件,所以学会它里面的函数是非常有必要的.而且我们总是忽略这里的知识点,总觉得这是不必须的,其实我们错了,这里才是程序的根本. 文件代码: /// <summary> /// 所有的应用,状态,程序被访问,用户退出,都可以找到., /// </summary> public class Global : System.Web.HttpApplication { /// <summary> //

Spring MVC 基础

Spring MVC 基础 1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层面上给我们帮助,无法在思考和过程上帮助我们,而我们很多人都不喜欢思考和尝试. 2.实现Web MVC的基础 实现Web MVC基础可以概括为1个前段控制器和2个映射. (1)前端控制器FrontController ASP.NET和JSP都是以Page路径和URL一一对应

MVC使用HandleErrorAttribute自定义异常

MVC中,有一个Filter可以捕捉错误,但是它的用法是利用Attribute来实现的,而且只能加在Controller和Action上,所以不能捕捉别出的错误 其实理论上所有的错误肯定产生于Controller中,但有2种情况下,就不会被捕捉了 1.页面不存在的时候,找不到对应的Controller,那没有任何Controller被执行,所以自然也不会捕捉到错误了 2.在 IAuthorizationFilter 下发生错误的时候,错误捕捉代码在IExceptionFilter中,而IAuth

The JSON request was too large to be deserialized

The JSON request was too large to be deserialized 这个问题出现的场景并不是很多,当你向服务端异步(ajax)post数据非常大的情况下(比如做权限管理的时候给某个角色分配权限那么就可能会出现,我所遇到的就是该角色大概200个模块每个模块平均2个功能----那么发送到服务端action的将是一个有着400个对象的数组) 之前我们向服务端异步post数组可能需要使用 1 $.ajax({ 2 type: 'POST', 3 url: '/system

MVC执行顺序

MVC在底层和传统的asp.net是一致的,在底层之上,相关流程如下: 1)Global.asax里,MvcApplication对象的Application_Start()事件中,调用 RouteConfig.RegisterRoutes(RouteTable.Routes); 来注册路由规则. 2)RouteConfig.RegisterRoutes()方法里,给出的默认规则为{controller}/{action}/{id} . a. 在有特别需要的时候,到这里来修改规则. b. 未指明