为asp.net core 自定义路由动态修改
根据IApplicationModelConvention 接口 实现相应的方法
/// <summary>
    /// 定义个类RouteConvention,private 来实现 IApplicationModelConvention 接口
    /// </summary>
public class RouteConvention : IApplicationModelConvention
{
private readonly AttributeRouteModel _centralPrefix; public RouteConvention(IRouteTemplateProvider routeTemplateProvider)
{ _centralPrefix = new AttributeRouteModel(routeTemplateProvider);
} //接口的Apply方法
public void Apply(ApplicationModel application)
{
application.Controllers.Where(d => !d.ControllerName.Contains("Base") &&
d.Attributes.Any(a => a.ToString().Contains(
"ApiControllerAttribute")))
.Each(controller =>
{
controller.Selectors
.Each(selectorModel =>
{
//修改路由
selectorModel.AttributeRouteModel = _centralPrefix;
});
});
}
}
然后我们在statup中 配置mvcoption
servers.AddMvc(opts=>{
  string apirouter = configuration["apirouter"];
                if (apirouter.IsNullOrEmpty())
                {
                    apirouter = "api/v{version}/[controller]";
                }
// 添加我们自定义 实现IApplicationModelConvention的RouteConvention
            opts.Conventions.Insert(, new RouteConvention(new RouteAttribute(apirouter)));
}
为asp.net core 自定义路由动态修改的更多相关文章
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
		ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ... 
- ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门
		一.前言 1.本文主要内容 ASP.NET Core MVC路由工作原理概述 ASP.NET Core MVC带路径参数的路由示例 ASP.NET Core MVC固定前/后缀的路由示例 ASP.NE ... 
- ASP.NET Core 入门笔记4,ASP.NET Core MVC路由入门
		敲了一部分,懒得全部敲完,直接复制大佬的博客了,如有侵权,请通知我尽快删除修改 摘抄自https://www.cnblogs.com/ken-io/p/aspnet-core-tutorial-mvc ... 
- ASP.NET Core的路由[5]:内联路由约束的检验
		当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对象的所有约束.路由系统采用IRouteC ... 
- ASP.NET Core的路由[2]:路由系统的核心对象——Router
		ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流 ... 
- asp.net core 自定义认证方式--请求头认证
		asp.net core 自定义认证方式--请求头认证 Intro 最近开始真正的实践了一些网关的东西,最近写几篇文章分享一下我的实践以及遇到的问题. 本文主要介绍网关后面的服务如何进行认证. 解决思 ... 
- 如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容?
		原文:如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容? 文章名称: 如何在ASP.NET Core自定义中间件读取Request.Body和 ... 
- asp.net core 自定义 Policy 替换 AllowAnonymous 的行为
		asp.net core 自定义 Policy 替换 AllowAnonymous 的行为 Intro 最近对我们的服务进行了改造,原本内部服务在内部可以匿名调用,现在增加了限制,通过 identit ... 
- asp.net core 自定义基于 HttpContext 的 Serilog Enricher
		asp.net core 自定义基于 HttpContext 的 Serilog Enricher Intro 通过 HttpContext 我们可以拿到很多有用的信息,比如 Path/QuerySt ... 
随机推荐
- VisualGDB系列11:Linux C++项目中使用外部Linux库
			根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 在<使用VS创建Linux静态库和 ... 
- Solaris11修改主机名
			在Solaris10中,主机名的修改是通过修改相关的配置文件实现的.在Solaris11中,主机名的配置信息已经转移到SMF配置库中,因此修改主机名的方式与Solaris10完全不同.以下是修改Sol ... 
- 12-01Js表单验证和JsWindow
			一.表单验证form 1.创建一个新的表单: <form id="id是唯一的,不可重复" name=“可重复”,method="post/get",ac ... 
- DAY14-前端之Bootstrap框架
			Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包. 它支持响应式布局,并且 ... 
- Group Layout
			----------------siwuxie095 将根面板 contentPane 的布局切换为 Group Layout Grou ... 
- GOOGLE机器学习速成班
			地址:https://developers.google.cn/machine-learning/crash-course/ 不用***就可以学习. 
- 前端学习笔记2017.6.21-html和浏览器的关系以及开发工具
			html文档是一种文件格式, 浏览器可以识别这种文件格式,并能把html文档里面的内容解析出来. 用更贴近程序员的话说就是:html相当于c语言,浏览器相当于c编译器. 开发工具用sublime te ... 
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-006归并排序(Mergesort)
			一. 1.特点 (1)merge-sort : to sort an array, divide it into two halves, sort the two halves (recursivel ... 
- 算法Sedgewick第四版-第1章基础-003一封装日期
			1. package ADT; import algorithms.util.StdOut; /**************************************************** ... 
- Windows Live Writer 使用指南
			一.简介 Windows Live Writer 是一个强大的离线博客编辑工具,通过它可以离线编辑内容丰富的博文,除了自身强大的编辑功能之外,还提供了接口,让其它开发人员通过插件提供工具自身没有提供的 ... 
