diff --git a/src/yarpgateway/Services/RouteCache.cs b/src/yarpgateway/Services/RouteCache.cs index 4d9ebed..0656d01 100644 --- a/src/yarpgateway/Services/RouteCache.cs +++ b/src/yarpgateway/Services/RouteCache.cs @@ -54,13 +54,23 @@ public class RouteCache : IRouteCache _logger.LogInformation("Route cache reloaded"); } - public RouteInfo? GetRoute(string tenantCode, string serviceName) + public RouteInfo? GetRoute(string? tenantCode, string? serviceName) { + // 参数校验 + if (string.IsNullOrEmpty(serviceName)) + { + _logger.LogDebug("GetRoute called with null or empty serviceName"); + return null; + } + + tenantCode ??= string.Empty; + _lock.EnterUpgradeableReadLock(); try { // 1. 优先查找租户专用路由 - if (_tenantRoutes.TryGetValue(tenantCode, out var tenantRouteMap) && + if (!string.IsNullOrEmpty(tenantCode) && + _tenantRoutes.TryGetValue(tenantCode, out var tenantRouteMap) && tenantRouteMap.TryGetValue(serviceName, out var tenantRoute)) { _logger.LogDebug("Found tenant-specific route: {Tenant}/{Service} -> {Cluster}",