首页 新闻 搜索 专区 学院

.Net 5 (.NetCore) 如何配置动态路由

0
悬赏园豆:20 [已解决问题] 解决于 2020-12-04 17:44

背景如下 : 

    目前是使用的Endpoints做集中式路由 , 由Json来维护这个路由表 , 每当程序启动的时候Config会加载最新的路由表 .

 

问题如下 : 

    但是目前需要的是 , 当修改了Json配置文件后 , 希望路由可以跟着刷新 , 此时应该使用什么方式呢 ? 

kaolasz的主页 kaolasz | 初学一级 | 园豆:3
提问于:2020-12-03 17:20
< >
分享
最佳答案
0

试下:reloadOnChange: 当Json配置文件发生变化时,重新加载

  public Startup(IHostingEnvironment env)
    {
        var configurationBuilder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("routes.json", optional: false, reloadOnChange: true);
        
        Configuration = configurationBuilder.Build();
    }

参考:https://www.it1352.com/1945415.html

收获园豆:20
大志若愚 | 老鸟四级 |园豆:2082 | 2020-12-04 09:39

这个其实是行不通的 , 在.NetCore3.1后使用的Endpoint路由规则 , 在程序启动的时候已经加载了路由 , 监听文件这种亲测确实没啥效果 , 如果是读取配置的话 , 那么在修改的时候是可以触发内存更新的 , 我的需求是路由已经创建好了 , 如何去刷新路由 . 不过还是十分感谢您的回答

kaolasz | 园豆:3 (初学一级) | 2020-12-04 14:08

@kaolasz:
看下动态路由,是不是可以满足,更新路由表
https://www.cnblogs.com/jionsoft/p/12115417.html

大志若愚 | 园豆:2082 (老鸟四级) | 2020-12-04 15:01

@大志若愚: 我也在研究这块的东西 , 

ASP.NET Core 3.0中使用动态控制器路由 - LamondLu - 博客园 (cnblogs.com)

这个文章也写得比较清晰 , 但是我有个问题是 , 没搞清楚如果我要拿到路由上的所有信息应该是怎么做 , 比如我需要自定义Controller,Action , 以及一些RouteData

kaolasz | 园豆:3 (初学一级) | 2020-12-04 15:48

@kaolasz:
路由表不就是一个集合吗,可以新增、修改、删除路由表中的数据

大志若愚 | 园豆:2082 (老鸟四级) | 2020-12-04 17:25

@大志若愚: 已经用 MapDynamicControllerRoute 搞定了 , 谢谢你的回复 , 加速了问题的解决 . 

kaolasz | 园豆:3 (初学一级) | 2020-12-04 17:44
其他回答(1)
0

你修改了json,不会重新启动服务吗?不是就跟着改了吗

不知道风往哪儿吹 | 园豆:1925 (小虾三级) | 2020-12-04 09:46

问题就在如何在程序内部重启自己呢 , 一般关闭自己可以强制关闭 , 但是开启的时候不会自行开启 , 需要借助第三方管理进程去运行 , 之前也想过此类方案 , 如果有好的方式可以在程序内部重启那也是一种解决方案 , 如果您这边有相关的信息 , 还请不吝赐教

支持(0) 反对(0) kaolasz | 园豆:3 (初学一级) | 2020-12-04 14:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册