MvcApplication 中方法的那点事
最近比较闲,不知道干点啥,想找兼职没有合适的,不找工资又不够花,o(︶︿︶)o 唉!
说多了都是泪,入正题吧。
首先,新建一个MVC4.0项目,建好之后打开Global.asax文件,在MVCApplication类中,只有一个方法Application_Start(),咱们就从它说起。
Application_Start
这是初始的代码:
- protected void Application_Start()
- {
- AreaRegistration.RegisterAllAreas();
- RouteConfig.RegisterRoutes(RouteTable.Routes);
- }
这个方法是不是很熟悉,这个方法是第一个请求进来之后最先运行、且只运行一次。
但是请看它还有好几个“兄弟姐妹”:
- protected void Application_Start(object sender, EventArgs e)
- {
- Debug.WriteLine("B: Application_Start(object sender, EventArgs e)");
- }
- protected void Application_OnStart()
- {
- Debug.WriteLine("C: Application_OnStart()");
- }
- protected void Application_OnStart(object sender, EventArgs e)
- {
- Debug.WriteLine("D: Application_OnStart(object sender, EventArgs e)");
- }
如果把他们放在一起会怎样,都会运行?都不运行?还是报错?Or只运行一个?是哪个? 详细答案在这里
我在这里只说一下结果:这四个方法一起存在的话,只会运行第四个Application_OnStart(object sender,EventArgs e),注释了第四个,会运行第三个,依此类推,优先级最低的是建项目自带的那个。
另外,我发现一个有趣的现象,在Application_Start方法中添加BeginRequest事件时,直接运行会报错,
如代码所示:
- protected void Application_Start()
- {
- Debug.WriteLine("A: Application_Start()");
- AreaRegistration.RegisterAllAreas();
- WebApiConfig.Register(GlobalConfiguration.Configuration);
- FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
- RouteConfig.RegisterRoutes(RouteTable.Routes);
- BundleConfig.RegisterBundles(BundleTable.Bundles);
- this.BeginRequest += MvcApplication_BeginRequest;
- //this.EndRequest += MvcApplication_EndRequest;
- }
- private void MvcApplication_BeginRequest(object sender, EventArgs e)
- {
- Debug.WriteLine("MvcApplication_BeginRequest");
- }
但是,加上 管道事件就没问题了,如代码:
- protected void Application_Start()
- {
- Debug.WriteLine("A: Application_Start()");
- AreaRegistration.RegisterAllAreas();
- WebApiConfig.Register(GlobalConfiguration.Configuration);
- FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
- RouteConfig.RegisterRoutes(RouteTable.Routes);
- BundleConfig.RegisterBundles(BundleTable.Bundles);
- this.BeginRequest += MvcApplication_BeginRequest;
- //this.EndRequest += MvcApplication_EndRequest;
- }
- private void MvcApplication_BeginRequest(object sender, EventArgs e)
- {
- Debug.WriteLine("MvcApplication_BeginRequest");
- }
- protected void Application_BeginRequest(object sender, EventArgs e)
- {
- Debug.WriteLine("at application_beginRequest :what's the sender type:{0}", sender.GetType());
- Debug.WriteLine("MvcApplication_BeginRequest");
- }
【未完待续】
- 不清楚为什么,有知道的麻烦告诉下,另外表述能力很差劲,请多谅解。
MvcApplication 中方法的那点事的更多相关文章
- Spring中你可能不知道的事(一)
Spring作为Java的王牌开源项目,相信大家都用过,但是可能大家仅仅用到了Spring最常用的功能,Spring实在是庞大了,很多功能可能一辈子都不会用到,今天我就罗列下Spring中你可能不知道 ...
- C#中方法的声明
C#中方法的声明(四要素) 访问修饰符 :public,private(方法的默认访问修饰符) 返回值类型:void 和 非void 方法名称 : 规范是方法名称取动词,每个单词的首字母大写. ...
- C#中方法的参数的四种类型
C#中方法的参数有四种类型: 1. 值参数类型 (不加任何修饰符,是默认的类型) 2. 引用型参数 (以ref 修饰符声明) 3. 输出型参数 (以out 修 ...
- JAVA文件夹导入到Eclipse中方法:
将JAVA文件夹导入到Eclipse中方法:方法一: 直接将java文件夹复制,然后粘贴到项目下:方法二:1.打开eclipse,点击项目的空白处,选择import:2.选择Existing Proj ...
- C#中方法的调用
C#中方法的调用 1.同一个类中方法的调用: 静态方法可以直接调用静态方法 静态方法不能直接调用非静态方法,静态方法先生成. 非静态方法可以直接调用静态方法 如果静态方法要调用非静态的方法,必须使用实 ...
- 关于Override在JDK1.5和JDK1.6上子类实现接口中方法使用@Override注解编译错误.
遇到这个问题说来也怪.新开了一个path的工作空间用来打patch.该Eclipse的默认全局的编译版本是1.6.但是唯独其中的一个插件项目的版本是1.5(可能是唯一的一个,不确定,不知道为什么会是这 ...
- Java中方法的重载
Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方 ...
- PHP 使用get_class_methods()和array_diff() 兩個相同的類中方法差集
进行二次开发时,习惯一份是原封不动的,一份正在修改.在修改时,发现修改的缺少原项目中的一些方法.本打算一个方法一个方法的对比,可是这样会比较花时间,划不来,PHP可以使用get_class_metho ...
- Java中获得程序当前路径的4中方法
Java中获得程序当前路径的4中方法: 在Application中: import java.util.*; public class TestUserDir { public static void ...
随机推荐
- ife task0003学习笔记(四):JavaScript构造函数
JavaScript创建对象主要是3种方法:工厂模式.构造函数模式.原型模式.其实对于构造函数的概念,我们并不陌生.在之前学习c++语言的时候,也有提到过构造函数的概念.除了创建对象,构造函数(con ...
- multiprocessing 模块
multiprocessing模块 进程对象 创建 p = Process(target=foo, args=(param,)) 属性 p.daemon: True为守护进程, 守护进程内无法再开启子 ...
- 人民币金额大小写Js转换
/** * 数字转中文 * @param dValue * @returns */ function chineseNumber(dValue) { var maxDec = 2; // 验证输入金额 ...
- 04.Path类的学习
path 是路径的意思. path类是一个静态类,所以path是一个工具类. Path类是专门用来操作路径的. Path的常用方法: namespace _15.Path类的学习 { class Pr ...
- Baseball Game
You're now a baseball game point recorder. Given a list of strings, each string can be one of the 4 ...
- c#winform循环播放多个视频
环境: vs2015 +winform 首先,vs自带组件很方便,所以,用windowMediaplayer组件,如果做单曲循环播放的话,加个属性: axWindowsMediaPlayer1.set ...
- Android NestedScrollView与RecyclerView嵌套,以及NestedScrollView不会滚动到屏幕顶部解决
①NestedScrollView与RecyclerView嵌套,导致滚动惯性消失 解决:mRecyclerView.setNestedScrollingEnabled(false); ②Nested ...
- win7下tomcat5.5无法通过ip和127.0.0.1访问的解决方法
解决办法:找到tomcat5.5目录下的conf\server.xml文件,原文如下: <Connector port="8080" maxHttpHeaderSize=&q ...
- To find names containing exactly five characters, use “^”and “$”to match the beginning and end of the name, and five instances of “.”in between: mysql
To find names containing exactly five characters, use “^”and “$”to match the beginning and end of th ...
- Informatica 9.1.0 Domain地址变化修改
由于公司机房的变动,infa所连数据库的IP地址变化,致使INFA不能启动.经过查找资料终于解决,现分享给大家,解决方法如下: 1.查看日志路径: Informatica/9.1.0/tomcat/l ...