最近在研究asp.net mvc的源码,于是在想,既然提供了源码,那我们如何进入源码调试了?在网上找了一些调试的方法,试了几个都不行,于是折腾了一上午,终于弄出来了,下面看看我的操作步骤。

    一:准备工作。本机安装的是vs2012,打了update1的补丁包,如图

    

    接下来下载asp.net mvc的源码,地址是:http://aspnetwebstack.codeplex.com/ ,下载之后解压出来即可。

  二:有两种方式可以调试源码,分别是:1)直接在源码的解决方案下新建一个asp.net mvc4应用程序 2)新建一个单独的asp.net mvc4解决方案 。两种方案我都尝试了,不过在这里我就演示方法2。

  三:修改System.Web.Mvc的版本号,编译。

    我们打开如下图所示的文件,可以看到其最新的版本是5.0.0.0

    

    

    在这里,我们将5.0.0.0 修改成为4.0.0.1 。这个版本号你可以修改为任意值,最关键的是要将你修改的值正确的填写在webconfig文件里面。

  四:修改新建的mvc解决方案里面webconfig中的版本号,重新注册公钥值。

    找到解决方案里面根目录下的webconfig文件,如下图操作。

    

    

    接下来就是用vs2012自带的命令行工具注册公钥值了,命令是:sn.exe -Vr *,31BF3856AD364E35

    

    看到这样的命令就是注册成功了。将这个公钥值按照上面那种图那样修改。

  五:修改View文件夹里面webconfig中的一些版本号

    

    

    

  六:引用源码中相应的dll

    先将新建的解决方案中如下dll移除掉。

    

    引用新的dll

    

  七:到这里我们就可以调式代码了

    因为asp.net mvc 也是运用了管道模型,也就是这个MvcHandler类处理请求,并通过httpmodule将结果返回给客户端。我们在Global.asax里面的 Application_Start加入断点,在MvcHandler的类中开始的位置加入断点,如下图。

    

    

    到这里,我们已经成功的进入了源码调试了。

  八:小插曲,将根目录下的webconfig里面的节点修改如下,不然网页显示有错误。

    

    

    按照如上修改,网页就可以正常显示了。

   总结:上面的做法是新建一个解决方案,然后调用dll。那么在源码的解决方案下新建一个项目,具体修改方发如上操作。

调试mvc 源码【转:http://www.cnblogs.com/wucj/archive/2013/06/09/3128698.html】的更多相关文章

  1. VS2013 调试MVC源码[MVC5.2.3+MVC4Web项目]

    1.目前MVC源码版本为5.2.3,下回来后用VS2013打开,把System.Web.Mvc项目的版本号改为4.0.0.1 2.在解决方案下建一个MVC4项目,.NET选4.5,修改根目录以及Vie ...

  2. 十步让你调试mvc源码

    1.下载 mvc 当前版本的源码,地址:http://aspnetwebstack.codeplex.com/SourceControl/latest 2.编译源码,参考:http://www.cnb ...

  3. (转)Jquery最实用的实例及源码(http://www.cnblogs.com/kingfly/archive/2012/12/05/2802539.html)

    1:窗口拖动 http://jqueryui.com/resizable/#max-min 2:导航条前后顺序拖动 http://jqueryui.com/sortable/ 3:类似百度首页板块顺序 ...

  4. Jquery 操作Html 控件 CheckBox、Radio、Select 控件 【转】http://www.cnblogs.com/lxblog/archive/2013/01/09/2853056.html

    Jquery 操作Html 控件 CheckBox.Radio.Select 控件   在使用 Javascript 编写前台脚本的时候,经常会操作 Html 控件,比如 checkbox.radio ...

  5. http://www.cnblogs.com/Joyes1989/archive/2013/06/28/3161739.html centos 输入法安装切换

    昨天装了一个centos  安装输入法的时候  让我有点纠结  全英文的 读不懂

  6. Invoke and BeginInvoke(转载:http://www.cnblogs.com/worldreason/archive/2008/06/09/1216127.html)

    一.为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是dotnet程序员众所周知的,我在此费点笔墨再次记录到自己的日志,以便日后提醒一下自己. 1 ...

  7. Asp.Net MVC源码调试

    首先下载MVC源代码,下载地址为:https://aspnetwebstack.codeplex.com/ 打开项目,卸载test文件夹下的所有项目和System.Web.WebPages.Admin ...

  8. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  9. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

随机推荐

  1. ios开发错误笔记

    今天的奇葩错误,最后解决方式是删除了手机上面的快捷方式,然后再clean,然后再重启了xcode.无语了,xcode也经常出些奇葩问题,真无语啊. ios技术交流群:378501081..期待你加入. ...

  2. 【spring 6】Spring和Hibernate的整合:编程式事务

    一.编程式事务简介 在 Spring 出现以前,编程式事务管理对基于 POJO 的应用来说是唯一选择.用过 Hibernate 的人都知道,我们需要在代码中显式调用beginTransaction() ...

  3. VC与JavaScript交互(四) --- WebBrowser或CHtmlView中轻松屏蔽脚本错误(JavaScript)

    1.什么是javascript脚本错误 1.1    概述 JavaScript脚本错误包含“运行时错误”和“语法错误”. 1.2    JavaScript“语法错误” JavaScript语法错误 ...

  4. mysql 常用sql操作语句

    获取数据库里所有表 SELECT TABLE_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='数据库名' 获取表里 ...

  5. ct任务添加与中控机批量后台操作

    ct 任务nohup sh ./bin/start.sh </dev/null >/dev/null 2>&1 & 中控机批量 for h in `get_hosts ...

  6. ctags对部分目录生成tags

    最近在研究Tiny6410上的uboot移植,看uboot源码时,生成tags文件用的是最粗暴的方法:“ctags -R *”,由于某些函数在各个平台下都有实现,导致在用“g+]”跳转到该函数的定义时 ...

  7. c++对象模型以及内存布局的研究

    先引出问题,看一段代码: #include <iostream> using namespace std; class A { }; class B { public: B() {} ~B ...

  8. TFS build dotCover StyleCop

    FS2010 – Customizing the Build Details View – Summary View http://blogs.msdn.com/b/jpricket/archive/ ...

  9. php 安装xdebug扩展

    php 扩展获取地址 http://pecl.php.net/package/ 编译安装的过程 wget http://pecl.php.net/get/xdebug-2.2.2.tgz tar -z ...

  10. PHP变量名区分大小写,函数名不区分大小写

    PHP变量名区分大小写,函数名不区分大小写,经常被新手忽视的小细节,测试如下. PHP变量名区分大小写测试: <?php $aaa = "phpddt.com"; $AAA ...