前些天在网上看到有人写调试MVC3源码的帖子,于是在想要是可以通过调试源码来深入了解MVC的运行机制,对于解决日常工作中遇到的问题,肯定会有很大帮助,于是忍不住作为小白鼠,先实验起来然后分享给大家^ ^。
首先是准备工作,下载MVC源码http://aspnetwebstack.codeplex.com/
解压:mvc3-rtm-sources.zip
直接运行解决方案:WebRuntime.sln
然后就可以看到我们工程中经常用到的一些组件啦
现在需要做的就是在客户端发送一个请求时能够单步跟进去一探究竟
首先在上图的解决方案中直接创建一个MVC 站点,然后移除对以下5个程序集的引用,并将MVC源码中对应的程序集引用进站点中
修改MVC源码程序集版本号改为之前移除的MVC的版本号
在站点视图配置文件中修改版本号,改为之前修改的版本号就行
在站点配置文件中修改版本号,同上
如果不出错现在就可以运行站点了
从调用堆栈可以看出上图应该就是从用户发送一个请求->IIS服务器->ASP.NET运行时->Routing组件->MVC接手后的第一个方法,参数是已经被包装好的.net对象RequestContext,方法返回后就可以一步一步跟踪MVC执行的整个执行生命周期了。