首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET MVC是如何运行的: URL路由

一个ASP.NET MVC应用来说,针对HTTP请求的处理和相应定义Controller类型的某个Action方法中,每个HTTP请求的目标对象不再像ASP .NET Web Form应用一样是一个物理文件...对于每一个抵达的HTTP请求,ASP.NET MVC会遍历路由表找到一个URL模板的模式与请求地址相匹配的路有对象,并最终解析出以Controller和Action名称为核心的路由数据。...我们自定义的ASP.NET MVC框架中,路由数据通过具有如下定义的RouteData类型表示。...我们自定义ASP.NET MVC框架中,路由表通过类型RouteTable表示。...ASP.NET MVC是如何运行的[1]: 建立“伪”MVC框架上的Web应用 ASP.NET MVC是如何运行的[2]: URL路由 ASP.NET MVC是如何运行的[3]: Controller

1.7K60

ASP.NET的路由系统:路由映射

路由注册的核心就是全局路由表中添加一个Route对象,该对象的绝大部分属性都可以通过MapPageRoute方法的相关参数来指定。接下来我们通过实现演示的方式来说明路由注册的一些细节问题。...三、对现有文件的路由 成功注册路由的情况下,如果我们按照传统的方式访问一个物理文件(比如.asxp、.css或者.js等),在请求地址满足某个路由的URL模板模式的情况下,ASP.NET是否还是正常实施路由呢...为了演示这种情况下,我们对Global.asax文件作了如下的改动,进行路由注册之前将RouteTable的Routes属性代表的RouteCollection对象的RouteExistingFiles...四、注册路由忽略地址 如果将代表全局路由表的RouteTable的静态属性Routes的RouteExistingFiles属性设置为True,意味着ASP.NET针对所有抵达的请求都一视同仁,都按照注册的路由表进行注册...为了让ASP.NET路由系统忽略掉针对.js文件请求,我们可以按照如下的方式Global.asax中调用RouteTable的Routes属性的Ignore方法。

2.2K90
您找到你想要的搜索结果了吗?
是的
没有找到

ASP.NET MVC5请求管道和生命周期

请求处理管道 请求管道是一些用于处理HTTP请求的模块组合,ASP.NET中,请求管道有两个核心组件:IHttpModule和IHttpHandler。...IIS7之前,如IIS6或IIS5,请求处理管道分为两个:IIS请求处理管道和ASP.NET管道,若客户端请求静态资源则只有IIS管道进行处理,而ASP.NET管道不会处理该请求。...对象池(.NET中类似的机制有线程池和字符串拘留池)中取出一个HttpApplication对象,同时ASP.NET会根据配置文件来初始化注册的HttpModule,HttpModule初始化时会订阅...UrlRoutingModule是非常重要的模块,它是路由系统的核心。路由系统的职责是从请求URL中获取controller和action的名称以及其它请求数据。...UrlRoutingModule根据当前请求的URL和RouteTable中已注册的路由模板进行匹配并返回第一个和当前请求相匹配的路有对象Route,然后根据路有对象获取路由数据对象RouteData(

1.6K30

.NETASP.NET Routing路由(深入解析路由系统架构原理)

对象内部结构 4.2RouteBase、Route、RouteCollection、RouteTable 路由核心对象模型 4.3RouteValueDictionary、RouteData、RequestContext...中核心的对象模型Routing模块,为什么说愉快呢,因为Routing正是建立大家都比较熟悉的ASP.NET管道模型基础之上的,所以相比其他一些陌生的概念会轻松很多,不过不要紧一回生二回熟; ASP.NET...路由核心对象模型 4.1 】节中,UrlRoutingModule是路由框架的基础设施部分,内置于....NETFramework系统及ASP.NET配置之中web.config;ASP.NET进行版本升级的时候该部分工作已经由系统自动帮我们升级,我们使用的时候只需要创建ASP.NET3.5 SP1以上的版本都会自动拥有路由系统功能...4.2】小节中,我们分析了路由系统的几个核心对象,但是核心对象要想运行起来中间必须有一些数据封装的对象为他们消除数据传递的问题;而这小节的三个核心对象真是路由系统能成功工作的必不可少的数据存放、数据传输容器的核心对象

1.5K90

自己动手写一个简单的MVC框架(第二版)

一、ASP.NET MVC核心机制回顾   ASP.NET MVC中,最核心的当属“路由系统”,而路由系统的核心则源于一个强大的System.Web.Routing.dll组件。 ?   ...Asp.Net Routing属于全局性的,所以它配置全局Web.Config 中,我们可以如下路径中找到:“$\Windows\Microsoft.NET\Framework\版本号\Config...ASP.NET MVC的实现中,是将请求交给了MvcHandler这个类,通过执行其ProcessRequest方法来进行后续的处理。 ?  ...以往的ASP.NET MVC开发中,我们Action方法的编写中,总会看到它们的返回类型都是以ActionResult为基类的各种Result类型。...因此,我们也Mvc文件夹中实现了一个RouteExtend类,它为RouteTable类的Route集合实现了一个扩展方法: /// /// Route 的扩展方法所在类

1.4K20

通过一个模拟程序让你明白ASP.NET MVC是如何运行的

为了更好的演示其实现原理,我创建一个简单的ASP.NET Web应用来模拟ASP.NET MVC的路由机制。...我们按照ASP.NET MVC的原理,通过解析请求URL得到Controller和Action的名称。...接下来我简单的介绍一下是哪些组建促使这个简单的ASP.NET Web应用能够按照MVC的模式来执行。为了使你能够真正的ASP.NET MVC找到匹配的组件,我们采用了相同的接口和类型名称。...中注册Route 通过上面定义的RouteTable类型,我们Global.asax中按照如下的方式应用启动的时候QueryStringRoute对象添加到RouteTable的静态属性Routes...ASP.NET MVC中,真正的请求处理体现在根据路由信息创建Controller,并执行相应的Action方法。这两个步骤体现的ProcessRequest方法中。

1.1K60

ASP.NET 路由

ASP.NET 路由使您可以使用不必映射到网站中特定文件的 URL。由于 URL 不必映射到文件,所以可以 Web 应用程序中使用 URL,这些 URL 是描述性的用户操作,因此更易于被用户理解。...一个不使用路由的 ASP.NET 应用程序中,对 URL 的传入请求通常映射到磁盘上的物理文件,如 .aspx 文件。... ASP.NET 路由中,您可以定义 URL 模式,该模式包含在处理 URL 请求时使用的值的占位符。在运行时,应用程序名称后面的 URL 部分根据您所定义的 URL 模式分析为离散值。... URL 重写中,如果更改了 URL 模式,则必须手动更新包含原始 URL 的所有超链接。 由于 ASP.NET 路由可以从 URL 提取值,所以处理传入请求时不更改 URL。...); RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); } 它会使用DebugRouteHandler来更新那些你的应用中所有的

2.2K81

ASP.NET的路由系统:根据路由规则生成URL

前面我们已经提到过,ASP.NET 的路由系统主要具有两个方面的应用,其一就是通过注册URL模板与物理文件路径的匹配实现请求地址和物理地址的分离;另一个则是通过注册的路由规测生成一个相应的URL。...GetVirtualPath定义了两个GetVirtualPath方法重载,它们共同的参数requestContext和values分别表示请求上下文(RouteData和HTTP上下文的封装)和用于替换定义URL...页面的后台代码中通过如果如下的代码调用RouteTable和Routes熟悉的GetVirtualPath方法生成三个具体的URL。...浏览器上访问Weather.aspx页面会得到如下图所示的3个URL。这充分证实了上面提到的关于变量选择优先级的结论。 ?...ASP.NET的路由系统:URL与物理文件的分离 ASP.NET的路由系统:路由映射 ASP.NET的路由系统:根据路由规则生成URL

1.3K80

WinForm企业应用框架设计【一】界限划分与动态创建WCF服务(no svc!no serviceActivations!)

中,放到RouteTable中只是注册了服务路由,并没有启动服务 但当客户端试图绑定这个服务的时候,服务会自行启动!...在这个代码中,我们约定以Service结尾的类型就是WCF服务类型 亲~这是约定优于配置的原则哦~ 当然我们应该为特例留下生存空间,我这里没有做,亲,你自己实现吧 这虽然是核心代码,但没有配置文件也是不行的...兼容模式下运行 基于IIS的WCF有两种模式,一种是ASP.NET并行,一种是ASP.NET兼容; 这些内容超出了咱们这篇文章的范畴了~就不多说了 ServiceBehavior的属性要求把错误发送给客户端...好吧~到此为止 ------ 下一节我们就说怎么动态识别这些服务~ 另外有个朋友让我帮着做一个打包工具 这个工具能够自动识别客户端有没有.net环境,如果没有,将先安装.net framework,再安装他的程序...----- 另外 很早之前与Artech和Frank Xu Lei交流过NO SVC的技术细节~ 在此表示感谢!两位都是WCF领域的大牛

54740

ASP.NET MVC Controller激活系统详解:总体设计

正式讨论Controller对象具体是如何被创建爱之前,我们先来看看Controller激活系统ASP.NET MVC中的总体设计,了解一下组成该子系统的一些基本的组件,以及它们对应的接口或者抽象类是什么...而通过属性HttpContext和RouteData属性返回的HttpContextBase和RouteData对象默认情况下实际上就是组成RequestContext的核心元素。...如下面的代码片断所示,我们调用RouteTable的静态属性Routes的MapRoute方法进行路由注册的时候指定了命名空间(“Artech.MvcApp”)。...[关于ASP.NET MVC路由,我的文章《ASP.NET MVC路由扩展:路由映射》中具有详细的介绍] 解析Controller真实类型的过程中,会先通过RouteData包含的命名空间来解析Controller...通过《ASP.NET路由系统实现原理:HttpHandler的动态映射》介绍我们知道ASP.NET路由系统的核心是一个叫做UrlRoutingModule的自定义HttpModule,路由的实现是它通过注册代表当前

1.7K60

ASP.NET MVC是如何运行的: 建立“伪”MVC框架上的Web应用

通过上面对ASP.NET管道设计的介绍,我们知道ASP.NET的扩展点只要体现在HttpMoudle和HttpHandler这两个核心组建之上,实际上整个ASP.NET MVC框架就是通过自定义的HttpMoudle...[源代码从这里下载] 正式介绍我们自己创建 的“迷你版”ASP.NET MVC的实现原理之前,我们不妨来看看建立该框架之上的Web应用如何实现。...我们通过Visual Studio创建一个空的ASP.NET Web应用(注意不是ASP.NET MVC应用),我们不会引用System.Web.Mvc.dll这个程序集,所以你接下来的程序中看到的定义该程序集中的同名类型都是我们自行定义的...RouteTable、ControllerBuilder和DefaultControllerFactory都是我们自定义的类型。...ASP.NET MVC是如何运行的[1]: 建立“伪”MVC框架上的Web应用 ASP.NET MVC是如何运行的[2]: URL路由 ASP.NET MVC是如何运行的[3]: Controller

1.3K60

尝试 Mono 3.0 下运行 ASP.NET MVC 4

尝试 Mono 3.0 下运行 ASP.NET MVC 4 在这之前, 我并不知道结果, 虽然网上有介绍说可以运行, 但是一直没有亲自尝试过, 所有, 本文的测试是真实的, 做一步就记录一步。...测试环境介绍 .Net 环境 .Net 测试环境为 Windows 8 , Visual Studio 2012.2 , .Net 4.5 , 可以说是码农必备, 如下图所示: ?...MVC 4 项目有很多 NuGet 包的引用, 不管三七二十一, 全部更新到最新, 不做任何修改, 然后直接编译运行, 将自动打开 IE 浏览器, 一切正常, 能看到下图的结果: ?...现在在 .Net 4.5 环境下新建一个空的 Web 项目, 如下图所示: ? 创建好之后, 删除不必要的引用, 项目结构最终如下所示: ?...("{resource}.axd/{*pathInfo}"); RouteTable.Routes.MapRoute( name: "Default", url: "{controller

1.2K20

ASP.NET Web API: 宿主(Hosting)

由于该 URL 不必映射到文件,因此可以使用对用户操作进行描述因而更易于被用户理解的 URL,路由ASP.NET Web API上一样有重要的位置。...ASP.NET平台上,是通过RouteTable的静态属性Routes添加路由到路由表里,例如下面的代码是ASP.NET MVC项目模板默认定义的路由: protected void Application_Start...从Route Handler中获取到一个实现IHttpHandler接口的Http处理程序 最后,当前的请求上下文映射到上述Http处理程序 因此,ASP.NET 管道的最后将请求发送这个处理器。...2、集成Web API,当宿主与ASP.NET,Web API的配置定义单件的HttpConfiguration对象里,通过静态属性GlobalConfiguration.Configuration访问...基于WCF堆栈的自宿主SelfHosting 上面我们介绍完了ASP.NET上的Web宿主,接下来我们来介绍基于WCF堆栈的自宿主SelfHosting。

1.3K60

快速入门系列--MVC--02路由

通过ASP.NET的路由系统,可以完成请求URL与物理文件的分离,其优点是:灵活性、可读性、SEO优化。...RouteBase 提供GetRouteData方法获得RouteData,该对象中属性RouteHandler用于提供HttpHandler对象,Values提供解析Url后的数据,DataTokens提供自己路由类型中添加的数据...Defaults属性提供模板变量默认值,Constraints提供约束条件 RouteTable 静态属性Routes维护全局路由表,属性RouteExistingFiles用于控制是否需要对存在的物理文件实施路由...cityCode}/{distinctCode}", "~/default.aspx", false, defaults, constraints, dataTokens);     再则是介绍一些路由模块ASP.NET...简单来说就是现在只有IIS支持ASP.NET管道,而JAVA却有Tomcat,Weblogic等很多优质的Web服务器支持Servlet,今后我们也可以很多开源高效的Web服务器上搭建.NET应用了,

81890

ASP.NET MVC 路由详解

事隔多年,其实也就一年啦,重新整理下ASP.NET MVC的相关知识。继续前面的内容,来说说路由。 Route ?...获取本次请求中控制器的行为的真实名称 路由集合RouteCollection: 存放路由规则的集合 Collection,一个MVC项目中,可以配置多个路由规则,按照键值对的格式存储到路由集合中 路由表RouteTable...:类中包含静态的RouteCollection属性,完成所有路由规则的全局存储,Global中完成注册 路由的注册 ?...可以看到,Global中使用RouteConfig.RegisterRoutes(RouteTable.Routes);来注册路由。...因为路由规则可以方便的传递和接受数据,因此MVC中基本不适用GET方式来请求数据,一般使用路由匹配和POST提交两种方式。

1.4K20

ASP.NET MVC路由扩展:路由映射

ASP.NET的路由系统旨在通过注册URL模板与物理文件之间的映射进而实现请求地址与文件路径之间的分离,但是对于ASP.NET MVC应用来说,请求的目标不再是一个具体的物理文件,而是定义某个Controller...出于自身路由特点的需要,ASP.NET对ASP.NET的路由系统进行了相应的扩展。...二、 实例演示:注册路由映射与查看路由信息 ASP.NET MVC通过定义RouteCollectionExtensions中的扩展方法MapRoute进行路由映射,为了让读者对此有一个深刻的认识,我们来进行一个简单的实例演示...[源代码从这里下载] 我们创建的ASP.NET Web应用(不是ASP.NET MVC应用)添加一个Web页面(Default.aspx),并按照之前的方式以内联代码的方式直接将RouteData的相关属性显示出来...当我们通过Visual Studio的ASP.NET MVC项目模版创建一个Web应用的时候,的Global.asax文件中会生成如下的代码通过调用AreaRegistration的静态方法RegisterAllAreas

1.3K100
领券