最近在研究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. C++ 中的返回值

    C++中大致有三种返回值:值拷贝(副本),值引用和指针,返回什么类型的值要根据当时情况而定. 如果返回的是大型对象的副本,那么在每一次的函数调用后返回,都会调用该对象类型的拷贝构造函数构造一个新的副本 ...

  2. Leetcode 0025. Reverse Nodes in k-Group

    居然把头插法写错了,debug了一个多小时 /** * Definition for singly-linked list. * struct ListNode { * int val; * List ...

  3. 【MySQL】MySQL同步报错-> Last_IO_Error: Got fatal error 1236 from master when reading data from binary log

    这个报错网上搜索了一下,大部分是由于MySQL意外关闭或强制重启造成的binlog文件事务点读取异常造成的主从同步报错 Last_IO_Error: Got fatal error 1236 from ...

  4. Oracle笔记 三、function 、select

    Scott表下有这么几个常用的表,而且还带有数据.分别是emp.dept.salgrade: 1.查看表结构用desc desc emp; 2.空表dual,最常用的空表,如: select 2 * ...

  5. 值得推荐的C/C++框架和库(转)

    值得学习的C语言开源项目 C++ 资源大全 值得学习的C语言开源项目 1.Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我 ...

  6. SQL Server 修复数据库 相关 脚本 之 DBCC CHECKDB 用法 来自同事分享

    DBCC CHECKDB 用法详解, 手工修复数据库 1. 快速修复 DBCC CHECKDB ('数据库名',REPAIR_FAST) 2.重建索引并修复 DBCC CHECKDB ('数据库名', ...

  7. Linux 不挂载设备,获取设备的文件系统信息

    块设备挂载后,可以通过df 或者 mount命令查看设备的文件系统信息.然而,有时候需要在不挂载设备的情况下予以判断,此时可以使用如下的方法: (1)查看文件系统类型 命令: file -sL /de ...

  8. 《深入剖析Tomcat》读书笔记(一)

    一.Tomcat Tomcat,全名Apache Tomcat,最初是由Sun发起,后来捐赠给ASF,是Apache Jakarta下的一个子项目.Tomcat是对Servlet API定义的容器的一 ...

  9. 如何解决谷歌浏览器下jquery无法获取图片的尺寸

    代码如下: $(document).ready(function(){ var img_h=$img.height(); var img_w=$img.width(); }) 以上代码在IE和火狐中没 ...

  10. JqueryMobile动态生成listView并实现刷新的两种方法

    本篇文章主要是对JqueryMobile动态生成listView并实现刷新的两种方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 JqueryMobile动态生成listView并实现刷新 ...