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

ASP.NET Core的路由:路由系统的核心对象——Router

ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流程使用...,并在成功匹配的情况下解析出路由参数并指定请求处理器之外,Router的路由解析还为另一个领用场景服务,那就是根据自身的路由规则和提供的参数生成一个URL。...二、RouteContext 接下来我们来了解一下整个路由解析涉及到了几个核心类型,首先来看看为整个路由解析提供执行上下文的这个RouteContext类型。...如上图所示,一个RouteContext上下文包含三个核心对象,一个是代表当前请求上下文的HttpContext对象,对应的属性是HttpContext。...RouteBase,前面演示实例体现的基于“路由模板”的路由解析策略就体现在这个类型中。

1.3K10

ASP.NET Core的路由:路由系统的核心对象——Router

ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流程使用...[本文已经同步到《ASP.NET Core框架揭秘》之中] 目录 一、IRouter接口 二、RouteContext 三、RouteData 四、Route 五、RouteHandler 总结 一...二、RouteContext 接下来我们来了解一下整个路由解析涉及到了几个核心类型,首先来看看为整个路由解析提供执行上下文的这个RouteContext类型。...如上图所示,一个RouteContext上下文包含三个核心对象,一个是代表当前请求上下文的HttpContext对象,对应的属性是HttpContext。...RouteBase,前面演示实例体现的基于“路由模板”的路由解析策略就体现在这个类型中。

1.9K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ASP.NET Web API路由系统:路由系统的几个核心类型

    虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道的核心部分(定义在程序集System.Web.Http.dll中)已经移除了对...也就是说,ASP.NET Web API核心框架的URL路由系统与ASP.NET本身的路由系统是相对独立的。...但是当我们采用基于Web Host的方式(定义在程序集System.Web.Http.WebHost.dll)将ASP.NET Web API承载于一个ASP.NET Web应用的时候,真正实现URL路由的依然是...ASP.NET的路由系统通过RouteData对象来封装解析出来的路由数据,其核心自然是通过Values和DataTokens属性封装的路由变量。...Web API管道的HttpConfiguration对象,这依赖于我们对Web API的寄宿方式,这并没有定义在ASP.NET Web API的核心框架之中。

    9.5K110

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

    总的来说,我们可以通过RouteTable的静态属性Routes得到一个基于应用的全局路由表,通过上面的介绍我们知道这是一个类型的RouteCollection的集合对象,我们可以通过调用它的MapPageRoute...路由注册的核心就是在全局路由表中添加一个Route对象,该对象的绝大部分属性都可以通过MapPageRoute方法的相关参数来指定。接下来我们通过实现演示的方式来说明路由注册的一些细节问题。...,我们在创建的ASP.NET Web应用中创建一个Weather.aspx页面,不过我们并不打算在该页面中呈现任何天气信息,而是将基于该页面的路由信息打印出来。...原因很简单,如果中间发生了路由,基于页面的RouteData的各项属性都不可能为空。[实例源代码下载] ? 那么是否意味着如果请求地址对应着一个现存的物理文件,ASP.NET就会自动忽略路由呢?...的路由系统:URL与物理文件的分离 ASP.NET的路由系统:路由映射 ASP.NET的路由系统:根据路由规则生成URL

    2.3K90

    ASP.NET Core的路由:内联路由约束的检验

    当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对象的所有约束。...当我们在一个ASP.NET Core应用中使用路由功能的时候,除了需要注册这个RouterMiddleware中间件之外,一般还需要调用ServiceCollection的扩展方法AddRouting注册一些与路由相关的服务...不过在这之前我们不妨先来看看使用这个约束最终实现的效果。在本例中我们创建了一个提供基于不同语言资源的Web API,简单起见,我们仅仅提供针对相应Culture的文本数据。...---- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系 ASP.NET Core的路由[2]:路由系统的核心对象——Router ASP.NET Core的路由...[3]:Router的创建者——RouteBuilder ASP.NET Core的路由[4]:来认识一下实现路由的RouterMiddleware中间件 ASP.NET Core的路由[5]:内联路由约束的检验

    1.3K60

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

    前面我们已经提到过,ASP.NET 的路由系统主要具有两个方面的应用,其一就是通过注册URL模板与物理文件路径的匹配实现请求地址和物理地址的分离;另一个则是通过注册的路由规测生成一个相应的URL。...如果在调用GetVirtualPath确定了具体使用的路由对象,则直接调用该路由对象的GetVirtualPath方法并返回其执行结果。...我们在调用GetVirtualPath方法的时候可以传入Null作为第一个参数(requestContext),在这种情况下会基于当前HTTP上下文(对应于HttpContext的静态属性Current...路由对象针对GetVirtualPath方法而进行的路由匹配只要求URL模板中定义的变量的值都能被提供,而这些变量值具有三种来源,分别是路由对象定义的默认变量值、指定RequestContext的RouteData...ASP.NET的路由系统:URL与物理文件的分离 ASP.NET的路由系统:路由映射 ASP.NET的路由系统:根据路由规则生成URL

    1.3K80

    ASP.NET Web API路由系统:Web Host下的URL路由

    ASP.NET Web API提供了一个独立于执行环境的抽象化的HTTP请求处理管道,而ASP.NET Web API自身的路由系统也不依赖于ASP.NET路由系统,所以它可以采用不同的寄宿方式运行于不同的应用程序中...实现在HostedHttpRoute之中的核心路由功能基本上是通过这个Route对象完成的,所以我们才说Web Host下的ASP.NET Web API的URL路由最终还是利用ASP.NET自身的路由系统实现的...路由系统的HttpWebRoute进行基于URL模板的路由解析,但是针对约束的检验依然是利用ASP.NET Web API路由系统中的HttpRouteConstraint来完成的。...Web API在Web Host模式下依然是借助ASP.NET自身的路由系统实现URL路由,那么意味着当我们针对ASP.NET Web API进行路由映射的时候必须在ASP.NET路由系统的全局路由表中添加对一个继承自抽象类...通过前面针对ASP.NET路由实现原理的介绍,我们知道整个路由系统的核心是一个叫做UrlRoutingModule的HttpModule,它通过注册HttpApplication的PostResolveRequestCache

    1.7K100

    【 软路由 】基于koolshare固件的软路由安装

    前言: 前段时间,弄一个软路由,踩坑无数,涉及到的主要问题如下: 第一次涉及到软路由,一脸懵逼,可以说是一点基础都没有。...,核心就是网关的配置,可以看到,对于一个局域网来说,路由器的左端可以看成连接外网的IP,这个IP是由它的上级路由发的,它的右端,又可以单开一个属于它自己的子网,子网号都可以由它自己定,它也可以作为DHCP...连接网线,我弄的网线连接是这样的,光猫用来拨号上网,光猫LAN口下出一根千兆线连接软路由WAN口,软路由LAN口,连接我的电脑。...这样,按照之前说的计网知识,我的电脑是属于软路由局域网下,我的电脑的网络的网关是软路由,所以我想要进网关,就需要输入软路由LAN口的IP地址,即,我在vi编辑器中设置的 192.168.113.1...配置网络接口 选择左侧工具栏中的 网络 -> 接口 开始配置网络接口,即配置路由器的WAN,LAN口。因为有的软路由,LAN口很多,有时候路由器不能全部识别,故需要手动配置。

    9K20

    ASP.NET Core 6框架揭秘实例演示:基于路由、MVC和gRPC的应用开发

    ASP.NET Core可以视为一种底层框架,它为我们构建出了基于管道的请求处理模型,这个管道由一个服务器和多个中间件构成,而与路由相关的EndpointRoutingMiddleware和EndpointMiddleware...(本篇提供的实例已经汇总到《ASP.NET Core 6框架揭秘-实例演示版》) [113]路由的应用(源代码) [114]开发MVC API(源代码) [115]开发MVC APP(源代码) [...116]开发gRPC API(源代码) [113]路由的应用 ASP.NET Core的路由是由EndpointRoutingMiddleware和EndpointMiddleware这两个中间件实现的...MVC应用以Controller为核心,所有的请求总是指向定义在某个Controller类型中的某个Action方法。...> @Greeter.Greet((DateTimeOffset)ViewBag.Time) body> 上面这个代码片段就是添加的视图文件(Views

    1K30

    深入探索路由算法的核心原理与应用

    引言 网络路由不仅确保数据包从源头顺利到达目的地,还优化了数据传输路径,提高了网络效率和性能。路由算法,作为网络设计的核心,决定了数据的传输路线。...二、距离矢量路由算法 2.1 原理 距离矢量路由算法基于简单的原理:每个路由器向其邻居广播其路由表,邻居根据收到的信息更新自己的路由表。...MPLS 的工作机制: 标签交换:在 MPLS 网络中,数据包被分配一个短小的标签,这个标签在网络中的每个点被用来决定下一跳的转发,而不是基于传统的IP头部信息。...标签分配:当数据包进入MPLS网络时,第一个LSR(标签边界路由器)将基于目的地IP地址分配一个标签。随着数据包通过网络,每个LSR可以更改标签,这个过程称为标签交换。...路径和流量工程:MPLS 允许网络管理员定义路径(Label Switched Paths, LSPs),这些路径可以基于不同的标准,如带宽需求或网络拥塞。

    12910

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

    这个过程是通过ASP.NET MVC的URL路由机制来实现的。...一、RouteData ASP.NET定义了一个全局的路由表,路由表中的每个路由对象对应着一个将Controller和Action名称作为站位符的URL模板。...对于每一个抵达的HTTP请求,ASP.NET MVC会遍历路由表找到一个URL模板的模式与请求地址相匹配的路有对象,并最终解析出以Controller和Action名称为核心的路由数据。...MVC提供的基于URL模板的路由机制是通过具有如下定义的Route类型实现的。...三、UrlRoutingModule 路由表的目的在于对当前的HTTP请求进行解析从而获取一个以Controller和Action名称为核心的路由数据,即上面介绍的RouteData,而整个解析工作是通过一个类型为

    1.8K60

    构建可读性更高的 ASP.NET Core 路由

    那么,这篇文章就来介绍下,如何调整我们的 ASP.NET Core 项目的路由规则,从而使我们项目的 URL 地址可读性更高。   ...因此,为了便捷输入,首先我们需要将我们的 URL 地址转换成小写的形式,在 ASP.NET Core 中,微软提供了 RoutingServiceCollectionExtensions.AddRouting...在 ASP.NET Core 中,我们可以通过在 Controller 或是 Action 方法上添加 RouteAttribute 的方式将用户自定义路由信息添加到项目的路由表中。...在 ASP.NET Core 2.2 版本中,微软为我们提供了参数转换器这一概念,我们可以通过实现 IOutboundParameterTransformer 这个接口,从而将 URL 中路由的值或者是...三、总结    在本章中,我们主要是调整了 ASP.NET Core 项目中的默认路由,从而使项目的 URL 地址具有更好的可读性。

    67110

    iOS中基于协议的路由设计

    我们这里就需要路由模块去解决类似的问题。我们的设计是每个模块都有自己的路由管理,路由主要职责应该有: 管理模块内部跳转。...目前路由的设计限于以下几种: 字符串标识对应界面,例如URL Router 利用Object-C特性,直接调用目的模块的方法 用protocol来和某个界面进行匹配 三、URL Router 目前绝大多数的路由是由字符串来打开某个页面.../使用路由 [URLRouter openURL:@“app://***Module/Destionation”]; 传递一串参数URL就可以进行页面间的跳转,这种方案可以再运行时随时更改路由规则,指向不同的页面...当然这种方案缺点也是很明显的: 第一、基于URL的设计只适合与UI界面,功能性的模块是不能采用这种方案的,所以这种方案只适用于视图驱动的模块。...基于Protocol的设计方案不会引起耦合,我们可以轻易替换掉相同功能的目的模块,这种方案也适用于各种解耦,例如Appdelegate的解耦。

    1.1K20

    ASP.NET路由系统实现原理:HttpHandler的动态映射

    我们可以通过HttpHandler的动态映射来实现请求地址与物理文件路径之间的分离。实际上ASP.NET路由系统就是采用了这样的实现原理。...如下图所示,ASP.NET路由系统通过一个注册到当前应用的自定义HttpModule对所有的请求进行拦截,并通过对请求的分析为之动态匹配一个用于处理它的HttpHandler。...MvcRouteHandler 三、ASP.NET路由系统扩展         实例演示:通过自定义Route对ASP.NET路由系统进行扩展 上图所示的作为请求拦截器的HttpModule...路由系统扩展 到此为止我们已经对ASP.NET的路由系统的实现进行了详细介绍,总的来说,整个路由系统是通过对HttpHandler的动态注册的方式来实现的。...实例演示:通过自定义Route对ASP.NET路由系统进行扩展 定义在ASP.NET路由系统中默认的路由类型Route建立了定义成文本模板的URL模式与某个物理文件之间的映射,如果我们对WCF REST

    1.7K60
    领券