根据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 自定义路由动态修改的更多相关文章

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

    ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...

  2. ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门

    一.前言 1.本文主要内容 ASP.NET Core MVC路由工作原理概述 ASP.NET Core MVC带路径参数的路由示例 ASP.NET Core MVC固定前/后缀的路由示例 ASP.NE ...

  3. ASP.NET Core 入门笔记4,ASP.NET Core MVC路由入门

    敲了一部分,懒得全部敲完,直接复制大佬的博客了,如有侵权,请通知我尽快删除修改 摘抄自https://www.cnblogs.com/ken-io/p/aspnet-core-tutorial-mvc ...

  4. ASP.NET Core的路由[5]:内联路由约束的检验

    当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对象的所有约束.路由系统采用IRouteC ...

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

    ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流 ...

  6. asp.net core 自定义认证方式--请求头认证

    asp.net core 自定义认证方式--请求头认证 Intro 最近开始真正的实践了一些网关的东西,最近写几篇文章分享一下我的实践以及遇到的问题. 本文主要介绍网关后面的服务如何进行认证. 解决思 ...

  7. 如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容?

    原文:如何在ASP.NET Core自定义中间件中读取Request.Body和Response.Body的内容? 文章名称: 如何在ASP.NET Core自定义中间件读取Request.Body和 ...

  8. asp.net core 自定义 Policy 替换 AllowAnonymous 的行为

    asp.net core 自定义 Policy 替换 AllowAnonymous 的行为 Intro 最近对我们的服务进行了改造,原本内部服务在内部可以匿名调用,现在增加了限制,通过 identit ...

  9. asp.net core 自定义基于 HttpContext 的 Serilog Enricher

    asp.net core 自定义基于 HttpContext 的 Serilog Enricher Intro 通过 HttpContext 我们可以拿到很多有用的信息,比如 Path/QuerySt ...

随机推荐

  1. IRedisClient

    事实上,IRedisClient里面的很多方法,其实就是Redis的命令名.只要对Redis的命令熟悉一点就能够非常快速地理解和掌握这些方法,趁着现在对Redis不是特别了解,我也对着命令来了解一下这 ...

  2. CSS3 高级属性

    尽管现代浏览器已经支持了众多的CSS3属性,但是大部分设计师和开发人员貌似依然在关注于一些很“主流”的属性,如border-radius.box-shadow或者transform等.它们有良好的文档 ...

  3. js中的操作符

    写在前面 js语法 DOM对象(把body,div,p等节点树看成一个对象) BOM对象(把浏览器的地址栏历史记录DOM等装在一个对象) 浏览器是宿主,但js的宿主不限于浏览器,也可以是服务器,如no ...

  4. PHP中几种加密形式

    1.Md5加密和Crypt都是单向加密: 登陆时把登录密码转为md5值,然后和数据库中的进行比较. 其中crypt中的盐值支持多种: 以CRYPT_STD_DES是以/0-9A-Za-z/中的两个字符 ...

  5. 猪羊——HTML解析

    HTML标签和属性大全见:http://www.cnblogs.com/Mr-liyang/p/5797976.html CSS样式大全:http://www.cnblogs.com/Mr-liyan ...

  6. C++获取电脑上连接的多个摄像头名称与编号

    #include<iostream>#include "strmif.h"#include <initguid.h>#include<vector&g ...

  7. 算法Sedgewick第四版-第1章基础-024-M/M/1 queue

    /****************************************************************************** * Compilation: javac ...

  8. javascript字符串 转 驼峰字符

    字符串  转  驼峰字符 <script type="text/javascript"> var str = 'peng-hui-datou'; function a( ...

  9. jquery 的插件 extend

      让我们来讲解  jquery中的插件机制  $.fn.extend and()  $.extend()这两个方法都接受一个参数,类型为Object.Object对象的“名/值对”分别代表“函数或方 ...

  10. 对Spark的理解

    Spark作为一个新的分布式计算引擎正慢慢流行起来,越来越来的企业也准备用它的替换MapReduce,根据自己在工作的一些体会谈谈的优势. 分布式计算归根到底还是一个Map和Reduce操作,Map操 ...