为asp.net core 自定义路由动态修改
2024-08-28 21:45:34
根据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)));
}
最新文章
- Jquery判断变量是否为空
- Rust初步(一):介绍
- [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(4)
- 在linux中,rpm和yum有什么区别?
- AsyncTask下载JSON
- android如何实现开机自动启动Service或app
- Inaccurate values for &ldquo;Currently allocated space&rdquo; and &ldquo;Available free space&rdquo; in the Shrink File dialog for TEMPDB only
- WPF自学入门(七)WPF 初识Binding
- 安装CentOS7,连接mysql提示密码错误
- python基础——生成器表达式
- SpringMVC入门到精通(一)
- MySQL 5.7 忘记密码
- JAVA后端笔试试题(一)
- Android adb logcat使用技巧
- SWIFT推送之本地推送(UILocalNotification)之二带按钮的消息
- js中特殊转换字符为html标签
- 也谈时间管理和GTD
- 实现WinForm窗体的美化(借助第三方控件)
- 《selenium2 python 自动化测试实战》(7)——定位一组对象
- laytpl....
热门文章
- 腾讯Web前端开发框架JX(Javascript eXtension tools)
- Python类(六)-静态方法、类方法、属性方法
- 原生的ado.net(访问sql server数据库)
- 2015.3.31不使用debug/X86文件夹方式解决64/32位问题
- C#引用类库时出现黄色三角加感叹号的处理
- CentOS6.5安装完没有网络的解决办法
- sqlserver 使用维护计划备份
- C++深度解析教程学习笔记(2)C++中的引用
- java之类的封装
- 修改linux内核启动logo及显示位置