ASP.NET Core 路由规则,自定义特性路由 ,IActionConstraint 路由约束 总结 mvc

资料

资料

路由服务

路由服务是在 Program.cs 中使用 builder.Services.AddRouting()注册的,
只是默认在 builder 之前已经注册过了,无需我们再次注册。
AddRouting()方法必须在 UseRouting()方法之前运行,它是路由的基础服务。

在这里插入图片描述

MapControllerRoute 用于常规路由

在这里插入图片描述

MapDefautControllerRoute 用于常规路由 这是上面的内容,但它简写了我上面显示的默认模式的配置。

MapControllers 属性路由 【特性路由】 最常用于 restfull api 或者webapi,

在这里插入图片描述

UseMvc 不能跟终结点路由一起使用 支持多路由 支持特性路由

//不启用终结点
builder.services.AddMvc(options => options.EnableEndpointRouting = false);

在这里插入图片描述

app.UseMvc(routes =>
{
routes.MapRoute(
name: “default”,
template: “{controller=Home}/{action=Index}/{id?}”);
routes.MapRoute(
name: “defaultXX”,
template: “Test/{controller=xxx}/{action=Index}/{id?}”);
});

UseMvcWithDedaultRoute 是app.UseMvc 的默认值 简写

使用名为“default”的默认路由和以下模板将 MVC 添加到 IApplicationBuilder
请求执行管道:“{controller=Home}/{action=Index}/{id?}”。
在这里插入图片描述

UseRouting UseEndpoints 终结点路由 支持多路由

在这里插入图片描述
UseRouting() 方法用于配置请求路由。

UseEndpoints() 方法用于定义请求的服务端点。
在这里插入图片描述
》》》配置终结点委托
MapGet
MapPost
MapPut
MapDelete
MapControllerRoute
MapHealthChecks
其他类似“MapXXX”的方法

总结

路由一共2种 UseEndpoints 和 UseMvc 不能同时使用
资料

自定义特性路由

在这里插入图片描述

比如HttpGet 继承 HttpMethodAttribute
在这里插入图片描述

public class MyApiControllerAttribute:Attribute,IRouteTemplateProvider
{public string Template => "api/[controller]";public int?Order {get;set}public string Name {get;set;}
}
IActionConstraint 路由约束

在这里插入图片描述

实现IActionConstraint最简单的方法是创建派生自 System.Attribute 的类,并将其置于操作和控制器上。
 MVC 将自动发现任何应用属性IActionConstraint的操作和控制器

//定义ActionConstraint属性约束
public class CountrySpecificAttribute : Attribute, IActionConstraint{private readonly string _countryCode;public CountrySpecificAttribute(string countryCode){_countryCode = countryCode;}//  越小 优先级越高public int Order{get{return 0;}}public bool Accept(ActionConstraintContext context){return string.Equals(context.RouteContext.RouteData.Values["languagecode"].ToString(),_countryCode,StringComparison.OrdinalIgnoreCase);}}
      //应用路由的action约束,并且路由中id值为en-US[CountrySpecific("en-US")]public IActionResult Privacy(string countryCode){return View();}
//在浏览器测试时:如果输入http://localhost:30081/home/Privacy/zh-cn,则网页显示404。
//如果输入http://localhost:30081/home/Privacy/en-US 则符合约束,网页显示正常。
//路由是  
app.UseMvc(routes =>
{routes.MapRoute(name: "default",template: "{controller=Home}/{action=Index}/{languagecode}");        
});

微软资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/467549.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux基础——详细篇

免责声明 学习视频来自B 站up主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 linux 基础命令重现 cd(切…

Prosre:一款直观的协议发送模拟软件

Proser 是一款直观的协议编辑、发送端模拟软件。 在涉及二进制协议通信的程序开发过程中,我们经常会通过助手类工具编写协议来验证自己的代码,但这些助手对于大协议的编辑非常不友好,这时Proser会协助你轻松的完成测试。 特点 数据直接表达…

常见 HTTP 状态码分类和解释及服务端向前端返回响应时的最完整格式

目前开发的项目很大程度上是为明年的国产化做准备了,所以借这个机会把用了十年的自研系统全部重写,订立更严格的规范,本文记录一下返回格式及对应状态码。 常见 HTTP 状态码及解释 HTTP 状态码用于表示客户端请求的响应状态,它们…

【DL】YOLO11 OBB目标检测 | 模型训练 | 推理

本文进行YOLO11的旋转目标检测任务,旋转目标检测能够更精确地定位和描述那些非水平排列的目标,比如倾斜的飞机、船舶等。在原始的目标检测中,添加一个角度预测,实现定向边界框检测。 话不多说,先来个效果图!!! YOLO11中的旋转目标检测的特点 ▲更精确的定位:通过使用…

自动泊车端到端算法 ParkingE2E 介绍

01 算法介绍 自主泊车是智能驾驶领域中的一项关键任务。传统的泊车算法通常使用基于规则的方案来实现。因为算法设计复杂,这些方法在复杂泊车场景中的有效性较低。 相比之下,基于神经网络的方法往往比基于规则的方法更加直观和多功能。通过收集大量专家…

2025斯诺克器材与用品展,2025郑州台球器材展会3月举办

立足中原,辐射全国,壹肆柒2025中国(郑州)国际台球产业博览会,展位招商正在进行; 2025中国(郑州)国际台球产业博览会(壹肆柒台球展) The 2025 China (Zhengzh…

单调栈—acwing

一、题目: AcWing 830. 单调栈 - AcWing 暴力算法思想 双指针算法,本质上是比较操作,两个循环,时间复杂度高。通过栈可以一次遍历。 可以知道,只要前面有一个小于我的数,就可以。如果前面的数&#xff…

Ingress nginx 公开TCP服务

文章目录 背景搞起拓展( PROXY Protocol )参考 背景 公司业务繁多, HTTP、GRPC、TCP多种协议服务并存,Kubernetes流量入口复杂,所以萌生了通过LoadBalancer Ingress-nginx 的方式完全的结果入口流量,当然在高并发的场景下可以对…

小白投资理财 - 看懂 MACA K线图

小白投资理财 - 看懂 MACA K线图 什么是 MACDMACD 主要有三种用法第一是看快线和慢线两个线的位置第二是观察两条线交叉的情况第三就是通过观察 BAR 柱状图可预判该股市的走向例子 MACD 缺点总结 股市茫茫大海, 打开 K 线图, 几时开始入场, 几时应该退场傻傻不知道,没有一个指标…

Essential Cell Biology -- Fifth Edition

今天开始看一本书,单纯想学生物和英语。如果有错误烦请大家指出。黑色下划线是总结, Chapter one 1.1 Cell: the fundamental units of life 什么是生物的基本特征,并将它们与非生物区分开来? 答案取决于[ hinges on]一个现在…

windows 实现 linux tail -f 的效果

需求: 有的环境部署在windows上面,想要查看生成的log日志,用文本打开无法实现自动更新,想要linux tail -f 的效果 编写txt文件 echo off powershell -Command "Get-Content -Path 文件地址 -Wait -Tail 200 -Encoding UTF8…

MySQL数据库专栏(四)MySQL数据库链接操作C#篇

摘要 主要讲述MySQL数据库链接操作C#的操作 目录 1、添加引用 2、接口介绍 2.1、MySqlConnection 2.2、MySqlCommand 2.3、MySqlDataReader 2.4、MySqlDataAdapter 2.5、MySqlTransaction 3、全网功能最全辅助类实现 4、辅助类调用实例 1、添加引用 …

tensorflow案例5--基于改进VGG16模型的马铃薯识别,准确率提升0.6%,计算量降低78.07%

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 本次采用VGG16模型进行预测,准确率达到了98.875,但是修改VGG16网络结构, 准确率达到了0.9969,并且计算量…

【MM-Align】学习基于输运的最优对齐动力学,快速准确地推断缺失模态序列

代码地址 - > github传送 abstract 现有的多模态任务主要针对完整的输入模态设置,即每个模态在训练集和测试集中要么是完整的,要么是完全缺失的。然而,随机缺失的情况仍然没有得到充分的研究。在本文中,我们提出了一种新的方…

github使用基础

要通过终端绑定GitHub账号并进行文件传输,你需要使用Git和SSH密钥来实现安全连接和操作。以下是一个基本流程: 设置GitHub和SSH 检查Git安装 通过终端输入以下命令查看是否安装Git: bash 复制代码 git --version配置Git用户名和邮箱 bash …

教程:FFmpeg结合GPU实现720p至4K视频转换

将一个 720p 的视频放大编码到 4K,这样的视频处理在很多业务场景中都会用到。很多视频社交、短视频、视频点播等应用,都会需要通过服务器来处理大量的视频编辑需求。 本文我们会探讨一下做这样的视频处理,最低的 GPU 指标应该是多少。利用开源…

大健康零售行业帮助中心的构建与客户服务优化

在大健康零售行业,客户服务的质量直接影响着企业的品牌形象和市场竞争力。随着数字化转型的推进,构建一个高效、智能的帮助中心成为了提升客户服务和满意度的关键。本文将分析大健康零售行业如何通过构建帮助中心来优化客户服务,并提升客户满…

想买开放式耳机如何挑选?5款高人气开放式耳机分享

很多人不知道的是,目前开放式耳机市场上,有90%的品牌都不是专业的开放式耳机品牌,跨界的大牌以及网红品牌占据了主流市场,这些品牌通常都是直接使用传统的声学技术直接应用在开放式耳机上,没有专门针对开放式环境的技术…

linux 通过apt安装软件包时出现依赖包版本不对的问题解决

通过网上查找解决办法时,发现的解决办法无法完美解决问题: 比如通过安装对应版本解决 如: sudo apt-get install xxx2.7.0ubuntu 这样会先卸载原先包,在安装对应版本的包 或者直接删除依赖的包 sudo apt-get purge xxxx 如果碰到底层包的话&#xf…

证件照尺寸168宽240高,如何手机自拍更换蓝底

在提供学籍照片及一些社会化考试报名时,会要求我们提供尺寸为168*240像素的电子版证件照,本文将介绍如何使用“报名电子照助手”,借助手机拍照功能完成证件照的拍摄和背景更换,特别是如何将照片尺寸调整为168像素宽和240像素高&am…