如何调试最新的asp.net mvc源码

最近在研究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。那么在源码的解决方案下新建一个项目,具体修改方发如上操作。

时间: 2024-10-07 05:02:20

如何调试最新的asp.net mvc源码的相关文章

asp.net mvc源码分析-ModelValidatorProviders 客户端的验证

几年写过asp.net mvc源码分析-ModelValidatorProviders 当时主要是考虑mvc的流程对,客户端的验证也只是简单的提及了一下,现在我们来仔细看一下客户端的验证. 如图所示, 首先我们要知道这里的data-val这些属性是在哪里生成的?可以肯定是在mvc后台生成的, @Html.PasswordFor(m => m.Password) 生成input @Html.ValidationMessageFor(m => m.Password) 生成span 调用层级关系:

asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证

原文:asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证 在前面的文章中我们曾经涉及到ControllerActionInvoker类GetParameterValue方法中有这么一句代码: ModelBindingContext bindingContext = new ModelBindingContext() { FallbackToEmptyPrefix = (parameterDescriptor.BindingInfo.Prefix

ASP.NET MVC 源码分析(一)

ASP.NET MVC 源码分析(一) 直接上图: 我们先来看Core的设计: 从项目结构来看,asp.net.mvc.core有以下目录: ActionConstraints:action限制相关 AntiForgery:防伪相关 ActionResults:action返回对象相关 ApiExplorer:API描述和元数据相关接口 ApplicationModels:应用程序模型相关,应该是全局的model Areas:地区标签 Filters:大名鼎鼎的过滤器组件 Formatters:

Asp.Net MVC源码调试

首先下载MVC源代码,下载地址为:https://aspnetwebstack.codeplex.com/ 打开项目,卸载test文件夹下的所有项目和System.Web.WebPages.Administration这个项目,然后重新编译源代码,重新生成所有项目. 在项目中新建一个空的Web项目,包含基本的MVC组件 删除项目中的如下程序集的引用 添加项目中MVC项目源码的引用 查询MVC源码的版本信息 可以看到当前源码的版本为5.2.4.0 打开新建项目中的所有Web.config文件,修改

发布几个asp.net mvc源码

asp.net mvc文件管理系统 简介: asp.net mvc文件管理系统,采用asp.net mvc?框架,前台使用easyUI,欢迎大家前来下载. asp.net 毕业设计-mvc学生宿舍维修系统源码 简介: asp.net 毕业设计-MVC学生宿舍维修系统源码,本系统基于asp.net mvc?开发. asp.net mvc多层进销存源码 简介: asp.net mvc多层进销存源码, 本项目是以前用mvc做的一个小项目, MVC + EasyUI +Asp.net三层架构权限控制.

asp.net MVC 源码分析

先上一张图吧 asp.net请求机制的图  by传智播客邹华栋老师 然后是 邹老师添加MVC请求过程的图 其实MVC 实在.netframework上加了一个过滤器  HttpModule 在C:\Windows\Microsoft.NET\Framework\v4.0.30319 下的配置文件里加入的  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" /&

ASP.NET MVC 源码分析(二) —— 从 IRouteBuilder认识路由构建

我们来看IRouteBuilder的定义: public interface IRouteBuilder { IRouter DefaultHandler { get; set; } IServiceProvider ServiceProvider { get; } IList<IRouter> Routes { get; } IRouter Build(); } 一个默认的IRouter对象,一个Build方法,一个IRouter集合和一个获取服务对象IServiceProvider. 我们

ASP.NET MVC源码分析系列

Controller下的JsonResult的ExecuteResult方法 public override void ExecuteResult(ControllerContext context) { if (context == null) { throw new ArgumentNullException("context"); } if ((this.JsonRequestBehavior == JsonRequestBehavior.DenyGet) &&

asp.net mvc源码分析-Action篇 IModelBinder

我们首先还是看看ReflectedParameterBindingInfo的Binder属性吧: public override IModelBinder Binder {            get {                IModelBinder binder = ModelBinders.GetBinderFromAttributes(_parameterInfo,                    () => String.Format(CultureInfo.Curre