wanshenmean
2026-03-27 69eb90fc1da6062b830891c599c6a51ad7ae5df5
fix(RouterService): 修复 QueryNextRoutes 缓存列表引用污染问题

将 AddRange 改为 Concat().ToList(),避免修改缓存列表的引用,
防止 MemoryCacheService 实现下缓存数据被意外篡改。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
已修改1个文件
10 ■■■■■ 文件已修改
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/Service/RouterService.cs
@@ -66,12 +66,10 @@
            List<Dt_Router> routers = new List<Dt_Router>();
            try
            {
                // 从缓存加载入口类型的所有路由数据
                List<Dt_Router> allRouters = GetAllRoutersFromCache(RouterInOutType.In.ObjToInt());
                // 从缓存加载出口类型的所有路由数据
                List<Dt_Router> outRouters = GetAllRoutersFromCache(RouterInOutType.Out.ObjToInt());
                // 合并入口和出口路由数据
                allRouters.AddRange(outRouters);
                // 从缓存加载入口类型和出口类型的路由数据并合并(创建新列表,避免修改缓存引用)
                List<Dt_Router> allRouters = GetAllRoutersFromCache(RouterInOutType.In.ObjToInt())
                    .Concat(GetAllRoutersFromCache(RouterInOutType.Out.ObjToInt()))
                    .ToList();
                // 在内存中进行路径搜索
                routers = FindRoutesInMemory(startPosi, endPosi, allRouters, null);