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

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

我们在上面已经提到过,这个约束并不是应用在具有某个路由参数上,而是应用到整个请求上,它要求匹配的请求必须具有指定的方法。...当我们在一个ASP.NET Core应用中使用路由功能的时候,除了需要注册这个RouterMiddleware中间件之外,一般还需要调用ServiceCollection的扩展方法AddRouting注册一些与路由相关的服务...我们利用资源文件来作为文本资源的存储,如下图所示,我们在一个ASP.NET Core应用中创建了两个资源文件Resources.resx(语言文化中性)和Resources.zh.resx(中文),并定义了一个名为...---- 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 Core的路由:路由系统的核心对象——Router

ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流程使用...下图基本上展示了RouteAsync方法试试路由解析的原理。 ?...它实际上是作为路由解析的输入,并在RouteContext创建的时候以构造函数参数的形式提供。...和DataTokens属性的类型都是RouteValueDictionary,它实际上就是一个字典对象而已,其Key和Value分别代表路由参数的名称和值,而作为Key的字符串是不区分大小写的。...,为了全局对象造成的“数据污染”问题,一种类型与“快照”的策略被应用到RouteData上。

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

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

    ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流程使用...[本文已经同步到《ASP.NET Core框架揭秘》之中] 目录 一、IRouter接口 二、RouteContext 三、RouteData 四、Route 五、RouteHandler 总结 一...下图基本上展示了RouteAsync方法试试路由解析的原理。 ?...它实际上是作为路由解析的输入,并在RouteContext创建的时候以构造函数参数的形式提供。...和DataTokens属性的类型都是RouteValueDictionary,它实际上就是一个字典对象而已,其Key和Value分别代表路由参数的名称和值,而作为Key的字符串是不区分大小写的。

    1.9K40

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

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

    67110

    【asp.net core 系列】4. 更高更强的路由

    路由属性(Route Attribute) 按照英文的直接翻译,Routing Attribute 的意思是路由属性,但实际上 Attribute在微软的官方称呼是特性。...我们之前了解的路由设置都是通过路由表设置的,而Route Attribute则是另外一种方案。...,其中AttributeTargets.Class | AttributeTargets.Method 表示这个特性是可以设置在类或者方法上的。...默认情况下是0 Template 路由解析模板,也就是在《【asp.net core 系列】2 控制器与路由的恩怨情仇》中介绍的路由表的格式串 介绍了这么多,我们先来试试看,先拿出来之前文章创建的MvcWeb...: Controller { } 这时候,在方法上如果添加了RouteAttribute,设置的路由信息如果不是以/ 开始,则会将该Action的路由配置加到Controller后面。

    63820

    在 ASP.NET Core 中使用 AI 驱动的授权策略限制站点访问

    ASP.NET Core 引入声明授权机制,该机制接受自定义策略来限制对应用程序或部分应用程序的访问,具体取决于经过身份验证的用户的特定授权属性。...有关 ASP.NET Core 授权框架以及我的 Web API 的源代码的详细信息,请分别参阅 bit.ly/2VN9Hmo 和 bit.ly/2IXPZCo。...ASP.NET Core 3 提供了一个管理授权策略的内置框架,我在这个解决方案中利用了此框架,并通过 Web API 公开了它。...图 1:授权流 在我的前一篇文章中,我介绍了如何使用 ASP.NET Core Web API 中的自定义授权策略检查的用户拥有的特定声明。...,通过正确的组合,可以帮助构建集成 IoT、机器学习、认知服务和 ASP.NET Core API 的端到端解决方案。

    2K20

    ASP.NET Core端点路由中三种让人困惑的路由函数

    早先提及了端点路由app.UseEndpoints, 端点路由强调的是端点和路由,其核心目的是将请求落地点与路由寻址方式解耦。...如今约定路由并不是主流,因为所谓的约定路由对于用户浏览并不友好,而且暴露了后端开发者定义的琐碎的Controller、Action名称。...实际上,不应该让用户的url去匹配开发者定义的Controller-Action名称(太丑陋的行为),而应该让开发者去匹配用户想要使用的url, 这样特性路由出现了。 2....这样的描述我其实是不苟同的: 路由在.NET里面, 已经被普世认定为“约定路由”和“特性路由”,基于这种认知,我读了好几遍官方英文描述,其实没读出个所以然的。...https://github.com/dotnet/aspnetcore/blob/main/src/Mvc/Mvc.Core/src/Builder/ControllerEndpointRouteBuilderExtensions.cs

    45830

    ASP.NET Core的路由:注册URL模式与HttpHandler的映射关系

    ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的。...目录 一、注册请求路径与HttpHandler之间的映射 二、设置内联约束 三、为路由参数设置默认值 四、特殊的路由参数 一、注册请求路径与HttpHandler之间的映射 ASP.NET Core针对请求的处理总是在一个通过...接下来我们就同一个简单的实例来演示这样的映射关系是如何通过注册RouterMiddleware中间件的方式来完成的。 我们演示的这个ASP.NET Core应用是一个简易版的天气预报站点。...接下来我们来完成所需的路由注册工作,实际上就是注册RouterMiddleware中间件。...ASP.NET Core针对我们常用的验证规则定义了相应的约束表达式,我们可以根据需要为某个路由参数指定一个或者多个约束表达式。

    1.3K10

    ASP.NET Core的路由:来认识一下实现路由的RouterMiddleware中间件

    虽然ASP.NET Core应用的路由是通过RouterMiddleware这个中间件来完成的,但是具体的路由解析功能都落在指定的Router对象上,不过我们依然有必要以代码实现的角度来介绍一下这个中间件...[本文已经同步到《ASP.NET Core框架揭秘》之中] 让RouterMiddleware中间件委托Router完整整个路由工作之后,解析出来的路由参数会以一个RouteData对象的形式存储在RouteContext...RouteContext上下文的RouteData最终会被附加到代表当前请求上下文的HttpContext上,而具体承载这个RouteData的就是这个名为RoutingFeature的特性。...GetRouteData得到封装了路由参数的RouteData对象之前,我们还可以调用另一个名为GetRouteValue发的扩展方法直接获取某个路由参数的值。...对于第二个重载来说,这个Router对象实际上是利用RouteBuilder创建的,我们在调用这个方法的时候需要以Action对象的形式利用这个RouteBuilder注册所需的路由

    69350

    ASP.NET Core的路由:注册URL模式与HttpHandler的映射关系

    ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的。...[本文已经同步到《ASP.NET Core框架揭秘》之中] 目录 一、注册请求路径与HttpHandler之间的映射 二、设置内联约束 三、为路由参数设置默认值 四、特殊的路由参数 一、注册请求路径与...接下来我们就同一个简单的实例来演示这样的映射关系是如何通过注册RouterMiddleware中间件的方式来完成的。 我们演示的这个ASP.NET Core应用是一个简易版的天气预报站点。...接下来我们来完成所需的路由注册工作,实际上就是注册RouterMiddleware中间件。...ASP.NET Core针对我们常用的验证规则定义了相应的约束表达式,我们可以根据需要为某个路由参数指定一个或者多个约束表达式。

    1.4K60

    .NET跨平台之旅:在Linux上以本地机器码(native)运行ASP.NET Core站点

    在将“.NET跨平台之旅”示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 (博文链接)之后,我们有一个难以抗拒的冲动 —— 体验一下...对应于我们的示例站点,就是将 ASP.NET Core 应用程序编译为本地机器码。 如何编译呢?...接下来,激动人心的时刻就要到了 —— 我们将以 AboutUs 这个编译为本地机器码的可执行文件运行 ASP.NET Core 站点。...站点成功运行起来了! 浏览器访问站点,一切正常。你现在看到的 about.cnblogs.com 就是在 Linux Ubuntu 服务器上以 native 方式运行的。...【更新】 后来出现502错误与.NET Core没有关系,是因为没有以后台服务的方式运行命令,ssh会话一断开,进程就结束了。

    1.1K90

    ASP.NET Core中三个egg疼的路由函数

    端点路由app.UseEndpoints强调的是端点和路由,它的核心目的是将请求落地点与路由寻址方式解耦。...、模式、默认值、约束和 dataTokens 的路由。...而且实际上不应该让用户的url去匹配Controller和Action名称,应该让开发者去匹配用户想要使用的url,这样就是特性路由。...不对约定路由做任何假设,也就是说不使用约定路由,而是依赖用户的特性路由, 它一般用在WebAPI项目中。 全文梳理就会发现: 官方英文描述屡次出现的route,其实特指的是约定路由。...这样的描述我其实是不苟同的: 路由在.NET里面, 已经被普世认定为“约定路由”和“特性路由”,基于这种认知,我读了好几遍官方英文描述,其实没读出个所以然的。

    58040

    【asp.net core 系列】2 控制器与路由的恩怨情仇

    前言 在上一篇文章中,我们初步介绍了asp.net core,以及如何创建一个mvc项目。从这一篇开始,我将为大家展示asp.net core 的各种内容,并且尝试带领大家来挖掘其中的内在逻辑。...当然,那是以后的事情。这一篇将通过自定义一个控制器来为大家介绍asp.net core mvc 中控制器和路由的相关知识。 ? 1....,让我们初窥asp.net core MVC是如何识别控制器的。...路由 在第一节中,我们介绍了一下asp.net core mvc如何寻找控制器和Action,那这一节将介绍程序如何从请求链接中解析出控制器和Action的名称,也就是路由映射。...2.1 路由的配置 对于所有的asp.net core模板都包括生成在代码中的路由。通常,我们要求路由在Startup.Configure方法中进行配置。

    91020

    基于ASP.NET core的MVC站点开发笔记 0x01

    基于ASP.NET core的MVC站点开发笔记 0x01 我的环境 OS type:mac Software:vscode Dotnet core version:2.0/3.1 dotnet sdk...第一次尝试,使用ASP.NET Core Empty就可以,代号是web,使用命令dotnet new web就可以新建一个空项目,项目的名称就是当前目录的名字mvc-test。...内置路由 这一节先当了解,暂时用处不大,学完也会忘掉 先简单看一下ASP.NET core内置的路由方式(直接上startup.cs代码内容): using Microsoft.AspNetCore.Builder...2.0和.net core 3.0创建路由的方式有所不同,现在分开说一下,先说一下旧的方式。...好,扯了半天报错,还是回到mvc路由上,上面是简单演示了一下在Startup中如何创建路由,其实mvc路由有两种定义方式: 约定路由:上面使用的方式就是约定路由,需要在Startup中配置; 特性路由:

    88410

    ASP.NET Core 使用功能开关控制路由访问的实现

    在 ASP.NET Core 中,可以结合中间件、路由过滤器和配置管理实现功能开关控制,从而灵活地管理 API 路由或页面访问。...本文将以 ASP.NET Core Web API 为例,详细介绍如何实现基于功能开关的路由访问控制,并附完整代码示例和优化建议。...二、在 ASP.NET Core 中使用功能开关控制路由访问的基本思路ASP.NET Core 提供了灵活的中间件和路由系统,可以轻松实现功能开关。...基于内存缓存的开关利用 ASP.NET Core 的 IMemoryCache 或 IDistributedCache 来存储功能开关状态。...通过功能开关控制路由访问是提升系统灵活性的重要手段,尤其在快速迭代、灰度发布和紧急回滚场景下非常有用。在 ASP.NET Core 中,我们可以结合配置文件、数据库、中间件等灵活实现功能开关控制。

    1.6K20

    ASP.NET Core路由中间件: 终结点与URL的映射

    ASP.NET Core的路由是通过EndpointRoutingMiddleware和EndpointMiddleware这两个中间件协作完成的,它们在ASP.NET Core平台上具有举足轻重的地位...,因为ASP.NET Core MVC框架就建立在这个中间件之上。...可以将一个ASP.NET Core应用视为一组终结点的组合,所谓的终结点可以理解为能够通过HTTP请求的形式访问的远程服务。每个终结点通过RequestDelegate对象来处理路由过来的请求。...为了使读者对实现在RouterMiddleware的路由功能有一个大体的认识,下面先演示几个简单的实例。 一、路由注册 我们演示的这个ASP.NET Core应用是一个简易版的天气预报站点。...ASP.NET Core为常用的验证规则定义了相应的约束表达式,我们可以根据需要为某个路由参数指定一个或者多个约束表达式。

    94531

    以太坊区块链 Asp.Net Core的安全API设计 (上)

    在本教程中,我们将构建一个Asp.Net Core 2项目作为API层,并构建一个简单的HTML/javascript客户端作为DApp,以实际演示此身份验证过程。 ?...这个附加组件“将以太坊带到你的浏览器上”。实际上,Metamask提供了一个web3对象,用于与你的DApp中的以太坊区块链进行交互,处理你的私钥并在浏览器中管理交易。 2.可选的。运行Geth节点。...开始 打开Visual Studio 2017,创建EthereumJwtSolution并添加两个Asp.Net Core 2 Web应用程序项目:EthereumJwtApi和EthereumJwtClient...我们将在Asp.Net Core上构建客户端应用程序,只是为了在IIS Express上轻松运行它。 我们需要准备EthereumJwtApi来创建和处理JWT token,以保护一些安全端点。...任务很简单,因为Asp.Net Core 2有一个内置的JWT机制,可以插入我们的应用程序。

    1.2K30

    ASP.NET Core在CentOS上的最小化部署实践

    引言 本文从Linux小白的视角, 在CentOS服务器上搭建一个Nginx-Powered AspNet Core Web准生产应用。...在开始之前,我们还是重温一下部署原理,正如你所常见的.Net Core 部署图: ?...在Linux上部署.Net Core App最好的方式是使用Kestrel 服务在端口5000上支撑web应用;然后设置Nginx作为反向代理服务器,将输入请求转发给Kestrel服务器, 这个模式称为...部署模型优势: 可扩展性:反向代理服务器和Web服务器可以设置在一台或者不同的机器上,为伸缩部署提供可能, 可按需部署多个Web服务器,Nginx反向代理服务器本身可充当优秀的负载均衡器。...UseAuthentication or similar authentication scheme middlewares. // ref.: https://www.ryadel.com/en/asp-net-core

    81810

    ASP.NET Core 2.2 : 十六.扒一扒2.2版更新的新路由方案

    ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不大,但从内部运行方式上来说,差别还是很大的。...上一篇详细介绍了原版路由方案的运行机制,本文仍然通过一幅图来了解一下新版的运行机制,最后再总结一下二者的异同点。...(ASP.NET Core 系列目录) 一、概述        此方案从2.2版本开始,被称作终结点路由(下文以“新版”称呼),它是默认开启的,若想采用原来的方案(<=2.1,下文以原版称呼),可以在AddMvc...51 } 52 }             ② 第6行,这里会获取并判断设置的EnableEndpointRouting的值,若为false,则采用旧版路由,详见上一篇文章;该值默认为true...Controller和action,而新版是先利用了action信息与路由模板匹配,然后再用请求的URL进行匹配,由于这样的工作只在第一次请求的时候执行,所以虽然没有做执行效率上的测试,但感觉应该是比之前快的

    70430
    领券