最近比较闲,不知道干点啥,想找兼职没有合适的,不找工资又不够花,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 中方法的那点事的更多相关文章

  1. Spring中你可能不知道的事(一)

    Spring作为Java的王牌开源项目,相信大家都用过,但是可能大家仅仅用到了Spring最常用的功能,Spring实在是庞大了,很多功能可能一辈子都不会用到,今天我就罗列下Spring中你可能不知道 ...

  2. C#中方法的声明

    C#中方法的声明(四要素) 访问修饰符 :public,private(方法的默认访问修饰符) 返回值类型:void 和 非void 方法名称    : 规范是方法名称取动词,每个单词的首字母大写. ...

  3. C#中方法的参数的四种类型

    C#中方法的参数有四种类型:       1. 值参数类型  (不加任何修饰符,是默认的类型)       2. 引用型参数  (以ref 修饰符声明)       3. 输出型参数  (以out 修 ...

  4. JAVA文件夹导入到Eclipse中方法:

    将JAVA文件夹导入到Eclipse中方法:方法一: 直接将java文件夹复制,然后粘贴到项目下:方法二:1.打开eclipse,点击项目的空白处,选择import:2.选择Existing Proj ...

  5. C#中方法的调用

    C#中方法的调用 1.同一个类中方法的调用: 静态方法可以直接调用静态方法 静态方法不能直接调用非静态方法,静态方法先生成. 非静态方法可以直接调用静态方法 如果静态方法要调用非静态的方法,必须使用实 ...

  6. 关于Override在JDK1.5和JDK1.6上子类实现接口中方法使用@Override注解编译错误.

    遇到这个问题说来也怪.新开了一个path的工作空间用来打patch.该Eclipse的默认全局的编译版本是1.6.但是唯独其中的一个插件项目的版本是1.5(可能是唯一的一个,不确定,不知道为什么会是这 ...

  7. Java中方法的重载

    Java 中方法的重载 问: 什么是方法的重载呢? 答: 如果同一个类中包含了两个或两个以上方法名相同.方法参数的个数.顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了.如下所示 4 个方 ...

  8. PHP 使用get_class_methods()和array_diff() 兩個相同的類中方法差集

    进行二次开发时,习惯一份是原封不动的,一份正在修改.在修改时,发现修改的缺少原项目中的一些方法.本打算一个方法一个方法的对比,可是这样会比较花时间,划不来,PHP可以使用get_class_metho ...

  9. Java中获得程序当前路径的4中方法

    Java中获得程序当前路径的4中方法: 在Application中: import java.util.*; public class TestUserDir { public static void ...

随机推荐

  1. [ElasticSearch] 如何使用中文分詞ik與繁簡轉換stconvert插件

    一. 環境安裝 ElasticSearch(以下簡稱ES)安裝已經算相對簡單了, 但要使用需要配置的插件, 對剛入門的新手還是有點麻煩, 所幸medcl大神提供一個配置好的ES-rtf版本, 新手們在 ...

  2. IE67不兼容display:inline-block,CSS hack解决

    追加以下代码:*display:inline.*zoom:1 ;} 块元素变为内联块, IE67不兼容:内联元素变为内联块,所有浏览器都支持 发现问题:当然,变为内联块后,有一个特性就是如果元素换行, ...

  3. gcc 链接非标准名称库

    一般库的标准名称是libxxx.so或者libxxx.a, 如果没有, 也可以搞个linkname出来, 那就可以直接用 "-lxxx" 来链接了, 但要是你想直接用realnam ...

  4. http状态代码含义收藏

    状态代码(也称作错误代码),指为服务器所接收每个请求(网页点击)分配的 3 位数代码.多数有效网页点击都有状态代码 200("正常")."网页未找到"错误会生产 ...

  5. C++程序设计基础(4)宏定义和内联

    1.知识点 1.1宏定义 (1)不带参数的宏定义 #define ERROR_MESSAGE -100 #define SECONDS_PER_DAY 60*60*60 (2)带参数宏定义,这种形式称 ...

  6. git提交代码报错 trailing whitespace的解决方法

    1. git提交代码报错 trailing whitespace 禁止执行pre-commit脚本 进入到项目目录中 chmod a-x .git/hooks/pre-commit 2.git提交代码 ...

  7. 解决npm install安装慢的问题

    国外镜像会很慢 可用 get命令查看registry npm congfig get registry 原版结果为 http://registry.npmjs.org 用set命令换成阿里的镜像就可以 ...

  8. vscode插件推荐

    在扩展(Ctrl+Shift+X)中直接搜索这些插件的名字安装即可 1.HTML Snippets 超级使用且初级的H5代码片段以及提示 2.HTML CSS Support 让HTML标签上写cla ...

  9. ASP.NET安全[开发ASP.NET MVC应用程序时值得注意的安全问题](转)

    概述 安全在web领域是一个永远都不会过时的话题,今天我们就来看一看一些在开发ASP.NET MVC应用程序时一些值得我们注意的安全问题.本篇主要包括以下几个内容 : 认证 授权 XSS跨站脚本攻击 ...

  10. Sql Server 锁 排它锁 更新锁 共享锁

    引用别人的.有时间整体整理下. 引用地址:http://www.cnblogs.com/wenjl520/archive/2012/08/24/2654412.html 锁的概述 一. 为什么要引入锁 ...