commit 1be630956745a577905fd168273d13f32321a474 Author: Sam <315859133@qq.com> Date: Sun Feb 1 23:24:47 2026 +0800 chore(auth): upgrade OpenIddict to 7.2.0 diff --git a/Config/DatabaseClusterConfigProvider.cs b/Config/DatabaseClusterConfigProvider.cs new file mode 100644 index 0000000..5fb53c4 --- /dev/null +++ b/Config/DatabaseClusterConfigProvider.cs @@ -0,0 +1,99 @@ +using Yarp.ReverseProxy.Configuration; +using Microsoft.EntityFrameworkCore; +using System.Collections.Concurrent; +using YarpGateway.Data; +using YarpGateway.Models; + +namespace YarpGateway.Config; + +public class DatabaseClusterConfigProvider +{ + private readonly IDbContextFactory _dbContextFactory; + private readonly ConcurrentDictionary _clusters = new(); + private readonly SemaphoreSlim _lock = new(1, 1); + private readonly ILogger _logger; + + public DatabaseClusterConfigProvider(IDbContextFactory dbContextFactory, ILogger logger) + { + _dbContextFactory = dbContextFactory; + _logger = logger; + _ = LoadConfigAsync(); + } + + public IReadOnlyList GetClusters() + { + return _clusters.Values.ToList().AsReadOnly(); + } + + public async Task ReloadAsync() + { + await _lock.WaitAsync(); + try + { + await LoadConfigInternalAsync(); + } + finally + { + _lock.Release(); + } + } + + private async Task LoadConfigAsync() + { + await LoadConfigInternalAsync(); + } + + private async Task LoadConfigInternalAsync() + { + await using var dbContext = _dbContextFactory.CreateDbContext(); + + var instances = await dbContext.ServiceInstances + .Where(i => i.Status == 1 && !i.IsDeleted) + .GroupBy(i => i.ClusterId) + .ToListAsync(); + + var newClusters = new ConcurrentDictionary(); + + foreach (var group in instances) + { + var destinations = new Dictionary(); + foreach (var instance in group) + { + destinations[instance.DestinationId] = new DestinationConfig + { + Address = instance.Address, + Metadata = new Dictionary + { + ["Weight"] = instance.Weight.ToString() + } + }; + } + + var config = new ClusterConfig + { + ClusterId = group.Key, + Destinations = destinations, + LoadBalancingPolicy = "DistributedWeightedRoundRobin", + HealthCheck = new HealthCheckConfig + { + Active = new ActiveHealthCheckConfig + { + Enabled = true, + Interval = TimeSpan.FromSeconds(30), + Timeout = TimeSpan.FromSeconds(5), + Path = "/health" + } + } + }; + newClusters[group.Key] = config; + } + + _clusters.Clear(); + foreach (var cluster in newClusters) + { + _clusters[cluster.Key] = cluster.Value; + } + + _logger.LogInformation("Loaded {Count} clusters from database", _clusters.Count); + } +} diff --git a/Config/DatabaseRouteConfigProvider.cs b/Config/DatabaseRouteConfigProvider.cs new file mode 100644 index 0000000..f0e4b7d --- /dev/null +++ b/Config/DatabaseRouteConfigProvider.cs @@ -0,0 +1,83 @@ +using System.Collections.Concurrent; +using Microsoft.EntityFrameworkCore; +using Yarp.ReverseProxy.Configuration; +using YarpGateway.Data; +using YarpGateway.Models; + +namespace YarpGateway.Config; + +public class DatabaseRouteConfigProvider +{ + private readonly IDbContextFactory _dbContextFactory; + private readonly ConcurrentDictionary _routes = new(); + private readonly SemaphoreSlim _lock = new(1, 1); + private readonly ILogger _logger; + + public DatabaseRouteConfigProvider( + IDbContextFactory dbContextFactory, + ILogger logger + ) + { + _dbContextFactory = dbContextFactory; + _logger = logger; + _ = LoadConfigAsync(); + } + + public IReadOnlyList GetRoutes() + { + return _routes.Values.ToList().AsReadOnly(); + } + + public async Task ReloadAsync() + { + await _lock.WaitAsync(); + try + { + await LoadConfigInternalAsync(); + } + finally + { + _lock.Release(); + } + } + + private async Task LoadConfigAsync() + { + await LoadConfigInternalAsync(); + } + + private async Task LoadConfigInternalAsync() + { + await using var dbContext = _dbContextFactory.CreateDbContext(); + + var routes = await dbContext + .TenantRoutes.Where(r => r.Status == 1 && !r.IsDeleted) + .ToListAsync(); + + var newRoutes = new ConcurrentDictionary(); + + foreach (var route in routes) + { + var config = new RouteConfig + { + RouteId = route.Id.ToString(), + ClusterId = route.ClusterId, + Match = new RouteMatch { Path = route.PathPattern }, + Metadata = new Dictionary + { + ["TenantCode"] = route.TenantCode, + ["ServiceName"] = route.ServiceName, + }, + }; + newRoutes[route.Id.ToString()] = config; + } + + _routes.Clear(); + foreach (var route in newRoutes) + { + _routes[route.Key] = route.Value; + } + + _logger.LogInformation("Loaded {Count} routes from database", _routes.Count); + } +} diff --git a/Config/JwtConfig.cs b/Config/JwtConfig.cs new file mode 100644 index 0000000..bd7550f --- /dev/null +++ b/Config/JwtConfig.cs @@ -0,0 +1,9 @@ +namespace YarpGateway.Config; + +public class JwtConfig +{ + public string Authority { get; set; } = string.Empty; + public string Audience { get; set; } = string.Empty; + public bool ValidateIssuer { get; set; } = true; + public bool ValidateAudience { get; set; } = true; +} diff --git a/Config/RedisConfig.cs b/Config/RedisConfig.cs new file mode 100644 index 0000000..28acc8a --- /dev/null +++ b/Config/RedisConfig.cs @@ -0,0 +1,8 @@ +namespace YarpGateway.Config; + +public class RedisConfig +{ + public string ConnectionString { get; set; } = "localhost:6379"; + public int Database { get; set; } = 0; + public string InstanceName { get; set; } = "YarpGateway"; +} diff --git a/Controllers/GatewayConfigController.cs b/Controllers/GatewayConfigController.cs new file mode 100644 index 0000000..5286f18 --- /dev/null +++ b/Controllers/GatewayConfigController.cs @@ -0,0 +1,272 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using YarpGateway.Data; +using YarpGateway.Config; +using YarpGateway.Models; +using YarpGateway.Services; +using Yarp.ReverseProxy.Configuration; + +namespace YarpGateway.Controllers; + +[ApiController] +[Route("api/gateway")] +public class GatewayConfigController : ControllerBase +{ + private readonly IDbContextFactory _dbContextFactory; + private readonly DatabaseRouteConfigProvider _routeProvider; + private readonly DatabaseClusterConfigProvider _clusterProvider; + private readonly IRouteCache _routeCache; + + public GatewayConfigController( + IDbContextFactory dbContextFactory, + DatabaseRouteConfigProvider routeProvider, + DatabaseClusterConfigProvider clusterProvider, + IRouteCache routeCache) + { + _dbContextFactory = dbContextFactory; + _routeProvider = routeProvider; + _clusterProvider = clusterProvider; + _routeCache = routeCache; + } + + [HttpGet("tenants")] + public async Task GetTenants() + { + await using var db = _dbContextFactory.CreateDbContext(); + var tenants = await db.Tenants + .Where(t => !t.IsDeleted) + .ToListAsync(); + return Ok(tenants); + } + + [HttpPost("tenants")] + public async Task CreateTenant([FromBody] CreateTenantDto dto) + { + await using var db = _dbContextFactory.CreateDbContext(); + var existing = await db.Tenants + .FirstOrDefaultAsync(t => t.TenantCode == dto.TenantCode); + if (existing != null) + { + return BadRequest($"Tenant code {dto.TenantCode} already exists"); + } + + var tenant = new GwTenant + { + Id = GenerateId(), + TenantCode = dto.TenantCode, + TenantName = dto.TenantName, + Status = 1 + }; + await db.Tenants.AddAsync(tenant); + await db.SaveChangesAsync(); + + return Ok(tenant); + } + + [HttpDelete("tenants/{id}")] + public async Task DeleteTenant(long id) + { + await using var db = _dbContextFactory.CreateDbContext(); + var tenant = await db.Tenants.FindAsync(id); + if (tenant == null) + return NotFound(); + + tenant.IsDeleted = true; + await db.SaveChangesAsync(); + + return Ok(); + } + + [HttpGet("tenants/{tenantCode}/routes")] + public async Task GetTenantRoutes(string tenantCode) + { + await using var db = _dbContextFactory.CreateDbContext(); + var routes = await db.TenantRoutes + .Where(r => r.TenantCode == tenantCode && !r.IsDeleted) + .ToListAsync(); + return Ok(routes); + } + + [HttpPost("tenants/{tenantCode}/routes")] + public async Task CreateTenantRoute(string tenantCode, [FromBody] CreateTenantRouteDto dto) + { + await using var db = _dbContextFactory.CreateDbContext(); + var tenant = await db.Tenants + .FirstOrDefaultAsync(t => t.TenantCode == tenantCode); + if (tenant == null) + return BadRequest($"Tenant {tenantCode} not found"); + + var clusterId = $"{tenantCode}-{dto.ServiceName}"; + var existing = await db.TenantRoutes + .FirstOrDefaultAsync(r => r.ClusterId == clusterId); + if (existing != null) + return BadRequest($"Route for {tenantCode}/{dto.ServiceName} already exists"); + + var route = new GwTenantRoute + { + Id = GenerateId(), + TenantCode = tenantCode, + ServiceName = dto.ServiceName, + ClusterId = clusterId, + PathPattern = dto.PathPattern, + Priority = 10, + Status = 1, + IsGlobal = false + }; + await db.TenantRoutes.AddAsync(route); + await db.SaveChangesAsync(); + + await _routeCache.ReloadAsync(); + + return Ok(route); + } + + [HttpGet("routes/global")] + public async Task GetGlobalRoutes() + { + await using var db = _dbContextFactory.CreateDbContext(); + var routes = await db.TenantRoutes + .Where(r => r.IsGlobal && !r.IsDeleted) + .ToListAsync(); + return Ok(routes); + } + + [HttpPost("routes/global")] + public async Task CreateGlobalRoute([FromBody] CreateGlobalRouteDto dto) + { + await using var db = _dbContextFactory.CreateDbContext(); + var existing = await db.TenantRoutes + .FirstOrDefaultAsync(r => r.ServiceName == dto.ServiceName && r.IsGlobal); + if (existing != null) + { + return BadRequest($"Global route for {dto.ServiceName} already exists"); + } + + var route = new GwTenantRoute + { + Id = GenerateId(), + TenantCode = string.Empty, + ServiceName = dto.ServiceName, + ClusterId = dto.ClusterId, + PathPattern = dto.PathPattern, + Priority = 0, + Status = 1, + IsGlobal = true + }; + await db.TenantRoutes.AddAsync(route); + await db.SaveChangesAsync(); + + await _routeCache.ReloadAsync(); + + return Ok(route); + } + + [HttpDelete("routes/{id}")] + public async Task DeleteRoute(long id) + { + await using var db = _dbContextFactory.CreateDbContext(); + var route = await db.TenantRoutes.FindAsync(id); + if (route == null) + return NotFound(); + + route.IsDeleted = true; + await db.SaveChangesAsync(); + + await _routeCache.ReloadAsync(); + + return Ok(); + } + + [HttpGet("clusters/{clusterId}/instances")] + public async Task GetInstances(string clusterId) + { + await using var db = _dbContextFactory.CreateDbContext(); + var instances = await db.ServiceInstances + .Where(i => i.ClusterId == clusterId && !i.IsDeleted) + .ToListAsync(); + return Ok(instances); + } + + [HttpPost("clusters/{clusterId}/instances")] + public async Task AddInstance(string clusterId, [FromBody] CreateInstanceDto dto) + { + await using var db = _dbContextFactory.CreateDbContext(); + var existing = await db.ServiceInstances + .FirstOrDefaultAsync(i => i.ClusterId == clusterId && i.DestinationId == dto.DestinationId); + if (existing != null) + return BadRequest($"Instance {dto.DestinationId} already exists in cluster {clusterId}"); + + var instance = new GwServiceInstance + { + Id = GenerateId(), + ClusterId = clusterId, + DestinationId = dto.DestinationId, + Address = dto.Address, + Weight = dto.Weight, + Health = 1, + Status = 1 + }; + await db.ServiceInstances.AddAsync(instance); + await db.SaveChangesAsync(); + + await _clusterProvider.ReloadAsync(); + + return Ok(instance); + } + + [HttpDelete("instances/{id}")] + public async Task DeleteInstance(long id) + { + await using var db = _dbContextFactory.CreateDbContext(); + var instance = await db.ServiceInstances.FindAsync(id); + if (instance == null) + return NotFound(); + + instance.IsDeleted = true; + await db.SaveChangesAsync(); + + await _clusterProvider.ReloadAsync(); + + return Ok(); + } + + [HttpPost("reload")] + public async Task ReloadConfig() + { + await _routeCache.ReloadAsync(); + await _routeProvider.ReloadAsync(); + await _clusterProvider.ReloadAsync(); + return Ok(new { message = "Config reloaded successfully" }); + } + + private long GenerateId() + { + return DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + } + + public class CreateTenantDto + { + public string TenantCode { get; set; } = string.Empty; + public string TenantName { get; set; } = string.Empty; + } + + public class CreateTenantRouteDto + { + public string ServiceName { get; set; } = string.Empty; + public string PathPattern { get; set; } = string.Empty; + } + + public class CreateGlobalRouteDto + { + public string ServiceName { get; set; } = string.Empty; + public string ClusterId { get; set; } = string.Empty; + public string PathPattern { get; set; } = string.Empty; + } + + public class CreateInstanceDto + { + public string DestinationId { get; set; } = string.Empty; + public string Address { get; set; } = string.Empty; + public int Weight { get; set; } = 1; + } +} diff --git a/Data/GatewayDbContext.cs b/Data/GatewayDbContext.cs new file mode 100644 index 0000000..a581d6f --- /dev/null +++ b/Data/GatewayDbContext.cs @@ -0,0 +1,52 @@ +using Microsoft.EntityFrameworkCore; +using YarpGateway.Models; + +namespace YarpGateway.Data; + +public class GatewayDbContext : DbContext +{ + public GatewayDbContext(DbContextOptions options) + : base(options) + { + } + + public DbSet Tenants => Set(); + public DbSet TenantRoutes => Set(); + public DbSet ServiceInstances => Set(); + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id); + entity.Property(e => e.TenantCode).HasMaxLength(50).IsRequired(); + entity.Property(e => e.TenantName).HasMaxLength(100).IsRequired(); + entity.HasIndex(e => e.TenantCode).IsUnique(); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id); + entity.Property(e => e.TenantCode).HasMaxLength(50); + entity.Property(e => e.ServiceName).HasMaxLength(100).IsRequired(); + entity.Property(e => e.ClusterId).HasMaxLength(100).IsRequired(); + entity.Property(e => e.PathPattern).HasMaxLength(200).IsRequired(); + entity.HasIndex(e => e.TenantCode); + entity.HasIndex(e => e.ServiceName); + entity.HasIndex(e => e.ClusterId); + entity.HasIndex(e => new { e.ServiceName, e.IsGlobal, e.Status }); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id); + entity.Property(e => e.ClusterId).HasMaxLength(100).IsRequired(); + entity.Property(e => e.DestinationId).HasMaxLength(100).IsRequired(); + entity.Property(e => e.Address).HasMaxLength(200).IsRequired(); + entity.HasIndex(e => new { e.ClusterId, e.DestinationId }).IsUnique(); + entity.HasIndex(e => e.Health); + }); + + base.OnModelCreating(modelBuilder); + } +} diff --git a/Data/GatewayDbContextFactory.cs b/Data/GatewayDbContextFactory.cs new file mode 100644 index 0000000..1dba2f2 --- /dev/null +++ b/Data/GatewayDbContextFactory.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; +using Microsoft.Extensions.Configuration; + +namespace YarpGateway.Data; + +public class GatewayDbContextFactory : IDesignTimeDbContextFactory +{ + public GatewayDbContext CreateDbContext(string[] args) + { + var configuration = new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json", optional: false) + .Build(); + + var optionsBuilder = new DbContextOptionsBuilder(); + var connectionString = configuration.GetConnectionString("DefaultConnection"); + optionsBuilder.UseNpgsql(connectionString); + + return new GatewayDbContext(optionsBuilder.Options); + } +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..1fca072 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base +WORKDIR /app +EXPOSE 8080 + +FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build +WORKDIR /src +COPY . . +RUN dotnet restore +RUN dotnet publish -c Release -o /app/publish + +FROM base AS final +WORKDIR /app +COPY --from=build /app/publish . +ENTRYPOINT ["dotnet", "YarpGateway.dll"] diff --git a/DynamicProxy/DynamicProxyConfigProvider.cs b/DynamicProxy/DynamicProxyConfigProvider.cs new file mode 100644 index 0000000..8cb68c7 --- /dev/null +++ b/DynamicProxy/DynamicProxyConfigProvider.cs @@ -0,0 +1,69 @@ +using Microsoft.Extensions.Primitives; +using Yarp.ReverseProxy.Configuration; +using YarpGateway.Config; + +namespace YarpGateway.DynamicProxy; + +public class DynamicProxyConfigProvider : IProxyConfigProvider +{ + private volatile IProxyConfig _config; + private readonly DatabaseRouteConfigProvider _routeProvider; + private readonly DatabaseClusterConfigProvider _clusterProvider; + private readonly object _lock = new(); + + public DynamicProxyConfigProvider( + DatabaseRouteConfigProvider routeProvider, + DatabaseClusterConfigProvider clusterProvider) + { + _routeProvider = routeProvider; + _clusterProvider = clusterProvider; + UpdateConfig(); + } + + public IProxyConfig GetConfig() + { + return _config; + } + + public void UpdateConfig() + { + lock (_lock) + { + var routes = _routeProvider.GetRoutes(); + var clusters = _clusterProvider.GetClusters(); + + _config = new InMemoryProxyConfig( + routes, + clusters, + Array.Empty>() + ); + } + } + + public async Task ReloadAsync() + { + await _routeProvider.ReloadAsync(); + await _clusterProvider.ReloadAsync(); + UpdateConfig(); + } + + private class InMemoryProxyConfig : IProxyConfig + { + private static readonly CancellationChangeToken _nullChangeToken = new(new CancellationToken()); + + public InMemoryProxyConfig( + IReadOnlyList routes, + IReadOnlyList clusters, + IReadOnlyList> transforms) + { + Routes = routes; + Clusters = clusters; + Transforms = transforms; + } + + public IReadOnlyList Routes { get; } + public IReadOnlyList Clusters { get; } + public IReadOnlyList> Transforms { get; } + public IChangeToken ChangeToken => _nullChangeToken; + } +} diff --git a/LoadBalancing/DistributedWeightedRoundRobinPolicy.cs b/LoadBalancing/DistributedWeightedRoundRobinPolicy.cs new file mode 100644 index 0000000..9921ffa --- /dev/null +++ b/LoadBalancing/DistributedWeightedRoundRobinPolicy.cs @@ -0,0 +1,243 @@ +using System.Text.Json; +using Microsoft.Extensions.Logging; +using StackExchange.Redis; +using Yarp.ReverseProxy.LoadBalancing; +using Yarp.ReverseProxy.Model; +using YarpGateway.Config; + +namespace YarpGateway.LoadBalancing; + +public class DistributedWeightedRoundRobinPolicy : ILoadBalancingPolicy +{ + private readonly IConnectionMultiplexer _redis; + private readonly RedisConfig _config; + private readonly ILogger _logger; + + public string Name => "DistributedWeightedRoundRobin"; + + public DistributedWeightedRoundRobinPolicy( + IConnectionMultiplexer redis, + RedisConfig config, + ILogger logger + ) + { + _redis = redis; + _config = config; + _logger = logger; + } + + public DestinationState? PickDestination( + HttpContext context, + ClusterState cluster, + IReadOnlyList availableDestinations + ) + { + if (availableDestinations.Count == 0) + return null; + + if (availableDestinations.Count == 1) + return availableDestinations[0]; + + var clusterId = cluster.ClusterId; + var db = _redis.GetDatabase(); + + var lockKey = $"lock:{_config.InstanceName}:{clusterId}"; + var stateKey = $"lb:{_config.InstanceName}:{clusterId}:state"; + + var lockValue = Guid.NewGuid().ToString(); + var lockAcquired = db.StringSet( + lockKey, + lockValue, + TimeSpan.FromMilliseconds(500), + When.NotExists + ); + + if (!lockAcquired) + { + _logger.LogDebug( + "Lock busy for cluster {Cluster}, using fallback selection", + clusterId + ); + return FallbackSelection(availableDestinations); + } + + try + { + var state = GetOrCreateLoadBalancingState(db, stateKey, availableDestinations); + + var selectedDestination = SelectByWeight(state, availableDestinations); + + UpdateCurrentWeights(db, stateKey, state, selectedDestination); + + _logger.LogDebug( + "Selected {Destination} for cluster {Cluster}", + selectedDestination?.DestinationId, + clusterId + ); + + return selectedDestination; + } + catch (Exception ex) + { + _logger.LogError( + ex, + "Error in distributed load balancing for cluster {Cluster}", + clusterId + ); + return availableDestinations[0]; + } + finally + { + var script = + @" + if redis.call('GET', KEYS[1]) == ARGV[1] then + return redis.call('DEL', KEYS[1]) + else + return 0 + end"; + db.ScriptEvaluate(script, new RedisKey[] { lockKey }, new RedisValue[] { lockValue }); + } + } + + private LoadBalancingState GetOrCreateLoadBalancingState( + IDatabase db, + string stateKey, + IReadOnlyList destinations + ) + { + var existingState = db.StringGet(stateKey); + + if (existingState.HasValue) + { + var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }; + ; + var parsedState = (LoadBalancingState?) + System.Text.Json.JsonSerializer.Deserialize( + existingState.ToString(), + options + ); + var version = ComputeConfigHash(destinations); + + if ( + parsedState != null + && parsedState.ConfigHash == version + && parsedState.CurrentWeights != null + ) + { + return parsedState; + } + } + + var newState = new LoadBalancingState + { + ConfigHash = ComputeConfigHash(destinations), + CurrentWeights = new Dictionary(), + }; + + foreach (var dest in destinations) + { + var weight = GetWeight(dest); + newState.CurrentWeights[dest.DestinationId] = 0; + } + + var json = System.Text.Json.JsonSerializer.Serialize(newState); + db.StringSet(stateKey, json, TimeSpan.FromHours(1)); + + return newState; + } + + private long ComputeConfigHash(IReadOnlyList destinations) + { + var hash = 0L; + foreach (var dest in destinations.OrderBy(d => d.DestinationId)) + { + var weight = GetWeight(dest); + hash = HashCode.Combine(hash, dest.DestinationId.GetHashCode()); + hash = HashCode.Combine(hash, weight); + } + return hash; + } + + private void UpdateCurrentWeights( + IDatabase db, + string stateKey, + LoadBalancingState state, + DestinationState? selected + ) + { + if (selected == null) + return; + + var json = JsonSerializer.Serialize(state); + db.StringSet(stateKey, json, TimeSpan.FromHours(1)); + } + + private DestinationState? SelectByWeight( + LoadBalancingState state, + IReadOnlyList destinations + ) + { + int maxWeight = int.MinValue; + int totalWeight = 0; + DestinationState? selected = null; + + foreach (var dest in destinations) + { + if (!state.CurrentWeights.ContainsKey(dest.DestinationId)) + { + state.CurrentWeights[dest.DestinationId] = 0; + } + + var weight = GetWeight(dest); + var currentWeight = state.CurrentWeights[dest.DestinationId]; + + var newWeight = currentWeight + weight; + state.CurrentWeights[dest.DestinationId] = newWeight; + totalWeight += weight; + + if (newWeight > maxWeight) + { + maxWeight = newWeight; + selected = dest; + } + } + + if (selected != null) + { + state.CurrentWeights[selected.DestinationId] = maxWeight - totalWeight; + } + + return selected; + } + + private DestinationState? FallbackSelection(IReadOnlyList destinations) + { + var hash = ComputeRequestHash(); + var index = Math.Abs(hash % destinations.Count); + return destinations[index]; + } + + private int ComputeRequestHash() + { + var now = DateTime.UtcNow; + return HashCode.Combine(now.Second.GetHashCode(), now.Millisecond.GetHashCode()); + } + + private int GetWeight(DestinationState destination) + { + if ( + destination.Model?.Config?.Metadata?.TryGetValue("Weight", out var weightStr) == true + && int.TryParse(weightStr, out var weight) + ) + { + return weight; + } + return 1; + } + + private class LoadBalancingState + { + public long ConfigHash { get; set; } + public Dictionary CurrentWeights { get; set; } = new(); + } +} diff --git a/Metrics/GatewayMetrics.cs b/Metrics/GatewayMetrics.cs new file mode 100644 index 0000000..48af459 --- /dev/null +++ b/Metrics/GatewayMetrics.cs @@ -0,0 +1,30 @@ +using System.Diagnostics.Metrics; + +namespace YarpGateway.Metrics; + +public class GatewayMetrics +{ + private readonly Counter _requestsTotal; + private readonly Histogram _requestDuration; + + public GatewayMetrics(IMeterFactory meterFactory) + { + var meter = meterFactory.Create("fengling.gateway"); + _requestsTotal = meter.CreateCounter( + "gateway_requests_total", + "Total number of requests"); + _requestDuration = meter.CreateHistogram( + "gateway_request_duration_seconds", + "Request duration in seconds"); + } + + public void RecordRequest(string tenant, string service, int statusCode, double duration) + { + var tag = new KeyValuePair("tenant", tenant); + var tag2 = new KeyValuePair("service", service); + var tag3 = new KeyValuePair("status", statusCode.ToString()); + + _requestsTotal.Add(1, tag, tag2, tag3); + _requestDuration.Record(duration, tag, tag2); + } +} diff --git a/Middleware/JwtTransformMiddleware.cs b/Middleware/JwtTransformMiddleware.cs new file mode 100644 index 0000000..19998c2 --- /dev/null +++ b/Middleware/JwtTransformMiddleware.cs @@ -0,0 +1,83 @@ +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.Extensions.Options; +using YarpGateway.Config; + +namespace YarpGateway.Middleware; + +public class JwtTransformMiddleware +{ + private readonly RequestDelegate _next; + private readonly JwtConfig _jwtConfig; + private readonly ILogger _logger; + + public JwtTransformMiddleware( + RequestDelegate next, + IOptions jwtConfig, + ILogger logger + ) + { + _next = next; + _jwtConfig = jwtConfig.Value; + _logger = logger; + } + + public async Task InvokeAsync(HttpContext context) + { + var authHeader = context.Request.Headers["Authorization"].FirstOrDefault(); + if (string.IsNullOrEmpty(authHeader) || !authHeader.StartsWith("Bearer ")) + { + await _next(context); + return; + } + + var token = authHeader.Substring("Bearer ".Length).Trim(); + + try + { + var jwtHandler = new JwtSecurityTokenHandler(); + var jwtToken = jwtHandler.ReadJwtToken(token); + + var tenantId = jwtToken.Claims.FirstOrDefault(c => c.Type == "tenant")?.Value; + var userId = jwtToken + .Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier) + ?.Value; + var userName = jwtToken.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name)?.Value; + var roles = jwtToken + .Claims.Where(c => c.Type == ClaimTypes.Role) + .Select(c => c.Value) + .ToList(); + + if (!string.IsNullOrEmpty(tenantId)) + { + context.Request.Headers["X-Tenant-Id"] = tenantId; + + if (!string.IsNullOrEmpty(userId)) + context.Request.Headers["X-User-Id"] = userId; + + if (!string.IsNullOrEmpty(userName)) + context.Request.Headers["X-User-Name"] = userName; + + if (roles.Any()) + context.Request.Headers["X-Roles"] = string.Join(",", roles); + + _logger.LogInformation( + "JWT transformed - Tenant: {Tenant}, User: {User}", + tenantId, + userId + ); + } + else + { + _logger.LogWarning("JWT missing tenant claim"); + } + } + catch (Exception ex) + { + _logger.LogError(ex, "Failed to parse JWT token"); + } + + await _next(context); + } +} diff --git a/Middleware/TenantRoutingMiddleware.cs b/Middleware/TenantRoutingMiddleware.cs new file mode 100644 index 0000000..ab0301d --- /dev/null +++ b/Middleware/TenantRoutingMiddleware.cs @@ -0,0 +1,63 @@ +using Microsoft.Extensions.Options; +using System.Text.RegularExpressions; +using YarpGateway.Services; + +namespace YarpGateway.Middleware; + +public class TenantRoutingMiddleware +{ + private readonly RequestDelegate _next; + private readonly IRouteCache _routeCache; + private readonly ILogger _logger; + + public TenantRoutingMiddleware( + RequestDelegate next, + IRouteCache routeCache, + ILogger logger) + { + _next = next; + _routeCache = routeCache; + _logger = logger; + } + + public async Task InvokeAsync(HttpContext context) + { + var tenantId = context.Request.Headers["X-Tenant-Id"].FirstOrDefault(); + if (string.IsNullOrEmpty(tenantId)) + { + await _next(context); + return; + } + + var path = context.Request.Path.Value ?? string.Empty; + var serviceName = ExtractServiceName(path); + + if (string.IsNullOrEmpty(serviceName)) + { + await _next(context); + return; + } + + var route = _routeCache.GetRoute(tenantId, serviceName); + if (route == null) + { + _logger.LogWarning("Route not found - Tenant: {Tenant}, Service: {Service}", tenantId, serviceName); + await _next(context); + return; + } + + context.Items["DynamicClusterId"] = route.ClusterId; + + var routeType = route.IsGlobal ? "global" : "tenant-specific"; + _logger.LogInformation("Tenant routing - Tenant: {Tenant}, Service: {Service}, Cluster: {Cluster}, Type: {Type}", + tenantId, serviceName, route.ClusterId, routeType); + + await _next(context); + } + + private string ExtractServiceName(string path) + { + var match = Regex.Match(path, @"/api/(\w+)/?"); + return match.Success ? match.Groups[1].Value : string.Empty; + } +} diff --git a/Migrations/20260201120312_InitialCreate.Designer.cs b/Migrations/20260201120312_InitialCreate.Designer.cs new file mode 100644 index 0000000..3f76f9c --- /dev/null +++ b/Migrations/20260201120312_InitialCreate.Designer.cs @@ -0,0 +1,209 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using YarpGateway.Data; + +#nullable disable + +namespace YarpGateway.Migrations +{ + [DbContext(typeof(GatewayDbContext))] + [Migration("20260201120312_InitialCreate")] + partial class InitialCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("YarpGateway.Models.GwServiceInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ClusterId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("CreatedBy") + .HasColumnType("bigint"); + + b.Property("CreatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("DestinationId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("Health") + .HasColumnType("integer"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UpdatedBy") + .HasColumnType("bigint"); + + b.Property("UpdatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .HasColumnType("integer"); + + b.Property("Weight") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("Health"); + + b.HasIndex("ClusterId", "DestinationId") + .IsUnique(); + + b.ToTable("ServiceInstances"); + }); + + modelBuilder.Entity("YarpGateway.Models.GwTenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .HasColumnType("bigint"); + + b.Property("CreatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantCode") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("UpdatedBy") + .HasColumnType("bigint"); + + b.Property("UpdatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("TenantCode") + .IsUnique(); + + b.ToTable("Tenants"); + }); + + modelBuilder.Entity("YarpGateway.Models.GwTenantRoute", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClusterId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("CreatedBy") + .HasColumnType("bigint"); + + b.Property("CreatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("PathPattern") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("ServiceName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantCode") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("UpdatedBy") + .HasColumnType("bigint"); + + b.Property("UpdatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ClusterId"); + + b.HasIndex("TenantCode", "ServiceName") + .IsUnique(); + + b.ToTable("TenantRoutes"); + }); + + modelBuilder.Entity("YarpGateway.Models.GwTenantRoute", b => + { + b.HasOne("YarpGateway.Models.GwTenant", null) + .WithMany() + .HasForeignKey("TenantCode") + .HasPrincipalKey("TenantCode") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Migrations/20260201120312_InitialCreate.cs b/Migrations/20260201120312_InitialCreate.cs new file mode 100644 index 0000000..870368f --- /dev/null +++ b/Migrations/20260201120312_InitialCreate.cs @@ -0,0 +1,133 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace YarpGateway.Migrations +{ + /// + public partial class InitialCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "ServiceInstances", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ClusterId = table.Column(type: "character varying(100)", maxLength: 100, nullable: false), + DestinationId = table.Column(type: "character varying(100)", maxLength: 100, nullable: false), + Address = table.Column(type: "character varying(200)", maxLength: 200, nullable: false), + Health = table.Column(type: "integer", nullable: false), + Weight = table.Column(type: "integer", nullable: false), + Status = table.Column(type: "integer", nullable: false), + CreatedBy = table.Column(type: "bigint", nullable: true), + CreatedTime = table.Column(type: "timestamp with time zone", nullable: false), + UpdatedBy = table.Column(type: "bigint", nullable: true), + UpdatedTime = table.Column(type: "timestamp with time zone", nullable: true), + IsDeleted = table.Column(type: "boolean", nullable: false), + Version = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ServiceInstances", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Tenants", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + TenantCode = table.Column(type: "character varying(50)", maxLength: 50, nullable: false), + TenantName = table.Column(type: "character varying(100)", maxLength: 100, nullable: false), + Status = table.Column(type: "integer", nullable: false), + CreatedBy = table.Column(type: "bigint", nullable: true), + CreatedTime = table.Column(type: "timestamp with time zone", nullable: false), + UpdatedBy = table.Column(type: "bigint", nullable: true), + UpdatedTime = table.Column(type: "timestamp with time zone", nullable: true), + IsDeleted = table.Column(type: "boolean", nullable: false), + Version = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Tenants", x => x.Id); + table.UniqueConstraint("AK_Tenants_TenantCode", x => x.TenantCode); + }); + + migrationBuilder.CreateTable( + name: "TenantRoutes", + columns: table => new + { + Id = table.Column(type: "bigint", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + TenantCode = table.Column(type: "character varying(50)", maxLength: 50, nullable: false), + ServiceName = table.Column(type: "character varying(100)", maxLength: 100, nullable: false), + ClusterId = table.Column(type: "character varying(100)", maxLength: 100, nullable: false), + PathPattern = table.Column(type: "character varying(200)", maxLength: 200, nullable: false), + Priority = table.Column(type: "integer", nullable: false), + Status = table.Column(type: "integer", nullable: false), + CreatedBy = table.Column(type: "bigint", nullable: true), + CreatedTime = table.Column(type: "timestamp with time zone", nullable: false), + UpdatedBy = table.Column(type: "bigint", nullable: true), + UpdatedTime = table.Column(type: "timestamp with time zone", nullable: true), + IsDeleted = table.Column(type: "boolean", nullable: false), + Version = table.Column(type: "integer", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TenantRoutes", x => x.Id); + table.ForeignKey( + name: "FK_TenantRoutes_Tenants_TenantCode", + column: x => x.TenantCode, + principalTable: "Tenants", + principalColumn: "TenantCode", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_ServiceInstances_ClusterId_DestinationId", + table: "ServiceInstances", + columns: new[] { "ClusterId", "DestinationId" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_ServiceInstances_Health", + table: "ServiceInstances", + column: "Health"); + + migrationBuilder.CreateIndex( + name: "IX_TenantRoutes_ClusterId", + table: "TenantRoutes", + column: "ClusterId"); + + migrationBuilder.CreateIndex( + name: "IX_TenantRoutes_TenantCode_ServiceName", + table: "TenantRoutes", + columns: new[] { "TenantCode", "ServiceName" }, + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Tenants_TenantCode", + table: "Tenants", + column: "TenantCode", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ServiceInstances"); + + migrationBuilder.DropTable( + name: "TenantRoutes"); + + migrationBuilder.DropTable( + name: "Tenants"); + } + } +} diff --git a/Migrations/20260201133826_AddIsGlobalToTenantRoute.Designer.cs b/Migrations/20260201133826_AddIsGlobalToTenantRoute.Designer.cs new file mode 100644 index 0000000..1466a7c --- /dev/null +++ b/Migrations/20260201133826_AddIsGlobalToTenantRoute.Designer.cs @@ -0,0 +1,205 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using YarpGateway.Data; + +#nullable disable + +namespace YarpGateway.Migrations +{ + [DbContext(typeof(GatewayDbContext))] + [Migration("20260201133826_AddIsGlobalToTenantRoute")] + partial class AddIsGlobalToTenantRoute + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("YarpGateway.Models.GwServiceInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ClusterId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("CreatedBy") + .HasColumnType("bigint"); + + b.Property("CreatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("DestinationId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("Health") + .HasColumnType("integer"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UpdatedBy") + .HasColumnType("bigint"); + + b.Property("UpdatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .HasColumnType("integer"); + + b.Property("Weight") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("Health"); + + b.HasIndex("ClusterId", "DestinationId") + .IsUnique(); + + b.ToTable("ServiceInstances"); + }); + + modelBuilder.Entity("YarpGateway.Models.GwTenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .HasColumnType("bigint"); + + b.Property("CreatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantCode") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("UpdatedBy") + .HasColumnType("bigint"); + + b.Property("UpdatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("TenantCode") + .IsUnique(); + + b.ToTable("Tenants"); + }); + + modelBuilder.Entity("YarpGateway.Models.GwTenantRoute", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClusterId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("CreatedBy") + .HasColumnType("bigint"); + + b.Property("CreatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("IsGlobal") + .HasColumnType("boolean"); + + b.Property("PathPattern") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("ServiceName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantCode") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("UpdatedBy") + .HasColumnType("bigint"); + + b.Property("UpdatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ClusterId"); + + b.HasIndex("ServiceName"); + + b.HasIndex("TenantCode"); + + b.HasIndex("ServiceName", "IsGlobal", "Status"); + + b.ToTable("TenantRoutes"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Migrations/20260201133826_AddIsGlobalToTenantRoute.cs b/Migrations/20260201133826_AddIsGlobalToTenantRoute.cs new file mode 100644 index 0000000..b2959df --- /dev/null +++ b/Migrations/20260201133826_AddIsGlobalToTenantRoute.cs @@ -0,0 +1,87 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace YarpGateway.Migrations +{ + /// + public partial class AddIsGlobalToTenantRoute : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_TenantRoutes_Tenants_TenantCode", + table: "TenantRoutes"); + + migrationBuilder.DropUniqueConstraint( + name: "AK_Tenants_TenantCode", + table: "Tenants"); + + migrationBuilder.DropIndex( + name: "IX_TenantRoutes_TenantCode_ServiceName", + table: "TenantRoutes"); + + migrationBuilder.AddColumn( + name: "IsGlobal", + table: "TenantRoutes", + type: "boolean", + nullable: false, + defaultValue: false); + + migrationBuilder.CreateIndex( + name: "IX_TenantRoutes_ServiceName", + table: "TenantRoutes", + column: "ServiceName"); + + migrationBuilder.CreateIndex( + name: "IX_TenantRoutes_ServiceName_IsGlobal_Status", + table: "TenantRoutes", + columns: new[] { "ServiceName", "IsGlobal", "Status" }); + + migrationBuilder.CreateIndex( + name: "IX_TenantRoutes_TenantCode", + table: "TenantRoutes", + column: "TenantCode"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_TenantRoutes_ServiceName", + table: "TenantRoutes"); + + migrationBuilder.DropIndex( + name: "IX_TenantRoutes_ServiceName_IsGlobal_Status", + table: "TenantRoutes"); + + migrationBuilder.DropIndex( + name: "IX_TenantRoutes_TenantCode", + table: "TenantRoutes"); + + migrationBuilder.DropColumn( + name: "IsGlobal", + table: "TenantRoutes"); + + migrationBuilder.AddUniqueConstraint( + name: "AK_Tenants_TenantCode", + table: "Tenants", + column: "TenantCode"); + + migrationBuilder.CreateIndex( + name: "IX_TenantRoutes_TenantCode_ServiceName", + table: "TenantRoutes", + columns: new[] { "TenantCode", "ServiceName" }, + unique: true); + + migrationBuilder.AddForeignKey( + name: "FK_TenantRoutes_Tenants_TenantCode", + table: "TenantRoutes", + column: "TenantCode", + principalTable: "Tenants", + principalColumn: "TenantCode", + onDelete: ReferentialAction.Restrict); + } + } +} diff --git a/Migrations/GatewayDbContextModelSnapshot.cs b/Migrations/GatewayDbContextModelSnapshot.cs new file mode 100644 index 0000000..9ff7b99 --- /dev/null +++ b/Migrations/GatewayDbContextModelSnapshot.cs @@ -0,0 +1,202 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using YarpGateway.Data; + +#nullable disable + +namespace YarpGateway.Migrations +{ + [DbContext(typeof(GatewayDbContext))] + partial class GatewayDbContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("YarpGateway.Models.GwServiceInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("ClusterId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("CreatedBy") + .HasColumnType("bigint"); + + b.Property("CreatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("DestinationId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("Health") + .HasColumnType("integer"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("UpdatedBy") + .HasColumnType("bigint"); + + b.Property("UpdatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .HasColumnType("integer"); + + b.Property("Weight") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("Health"); + + b.HasIndex("ClusterId", "DestinationId") + .IsUnique(); + + b.ToTable("ServiceInstances"); + }); + + modelBuilder.Entity("YarpGateway.Models.GwTenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedBy") + .HasColumnType("bigint"); + + b.Property("CreatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantCode") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("UpdatedBy") + .HasColumnType("bigint"); + + b.Property("UpdatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("TenantCode") + .IsUnique(); + + b.ToTable("Tenants"); + }); + + modelBuilder.Entity("YarpGateway.Models.GwTenantRoute", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("bigint"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClusterId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("CreatedBy") + .HasColumnType("bigint"); + + b.Property("CreatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("IsDeleted") + .HasColumnType("boolean"); + + b.Property("IsGlobal") + .HasColumnType("boolean"); + + b.Property("PathPattern") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("character varying(200)"); + + b.Property("Priority") + .HasColumnType("integer"); + + b.Property("ServiceName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("character varying(100)"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantCode") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("UpdatedBy") + .HasColumnType("bigint"); + + b.Property("UpdatedTime") + .HasColumnType("timestamp with time zone"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ClusterId"); + + b.HasIndex("ServiceName"); + + b.HasIndex("TenantCode"); + + b.HasIndex("ServiceName", "IsGlobal", "Status"); + + b.ToTable("TenantRoutes"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Migrations/script.sql b/Migrations/script.sql new file mode 100644 index 0000000..9a8b36d --- /dev/null +++ b/Migrations/script.sql @@ -0,0 +1,89 @@ +CREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" ( + "MigrationId" character varying(150) NOT NULL, + "ProductVersion" character varying(32) NOT NULL, + CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY ("MigrationId") +); + +START TRANSACTION; +CREATE TABLE "ServiceInstances" ( + "Id" bigint GENERATED BY DEFAULT AS IDENTITY, + "ClusterId" character varying(100) NOT NULL, + "DestinationId" character varying(100) NOT NULL, + "Address" character varying(200) NOT NULL, + "Health" integer NOT NULL, + "Weight" integer NOT NULL, + "Status" integer NOT NULL, + "CreatedBy" bigint, + "CreatedTime" timestamp with time zone NOT NULL, + "UpdatedBy" bigint, + "UpdatedTime" timestamp with time zone, + "IsDeleted" boolean NOT NULL, + "Version" integer NOT NULL, + CONSTRAINT "PK_ServiceInstances" PRIMARY KEY ("Id") +); + +CREATE TABLE "Tenants" ( + "Id" bigint GENERATED BY DEFAULT AS IDENTITY, + "TenantCode" character varying(50) NOT NULL, + "TenantName" character varying(100) NOT NULL, + "Status" integer NOT NULL, + "CreatedBy" bigint, + "CreatedTime" timestamp with time zone NOT NULL, + "UpdatedBy" bigint, + "UpdatedTime" timestamp with time zone, + "IsDeleted" boolean NOT NULL, + "Version" integer NOT NULL, + CONSTRAINT "PK_Tenants" PRIMARY KEY ("Id"), + CONSTRAINT "AK_Tenants_TenantCode" UNIQUE ("TenantCode") +); + +CREATE TABLE "TenantRoutes" ( + "Id" bigint GENERATED BY DEFAULT AS IDENTITY, + "TenantCode" character varying(50) NOT NULL, + "ServiceName" character varying(100) NOT NULL, + "ClusterId" character varying(100) NOT NULL, + "PathPattern" character varying(200) NOT NULL, + "Priority" integer NOT NULL, + "Status" integer NOT NULL, + "CreatedBy" bigint, + "CreatedTime" timestamp with time zone NOT NULL, + "UpdatedBy" bigint, + "UpdatedTime" timestamp with time zone, + "IsDeleted" boolean NOT NULL, + "Version" integer NOT NULL, + CONSTRAINT "PK_TenantRoutes" PRIMARY KEY ("Id"), + CONSTRAINT "FK_TenantRoutes_Tenants_TenantCode" FOREIGN KEY ("TenantCode") REFERENCES "Tenants" ("TenantCode") ON DELETE RESTRICT +); + +CREATE UNIQUE INDEX "IX_ServiceInstances_ClusterId_DestinationId" ON "ServiceInstances" ("ClusterId", "DestinationId"); + +CREATE INDEX "IX_ServiceInstances_Health" ON "ServiceInstances" ("Health"); + +CREATE INDEX "IX_TenantRoutes_ClusterId" ON "TenantRoutes" ("ClusterId"); + +CREATE UNIQUE INDEX "IX_TenantRoutes_TenantCode_ServiceName" ON "TenantRoutes" ("TenantCode", "ServiceName"); + +CREATE UNIQUE INDEX "IX_Tenants_TenantCode" ON "Tenants" ("TenantCode"); + +INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion") +VALUES ('20260201120312_InitialCreate', '9.0.0'); + +ALTER TABLE "TenantRoutes" DROP CONSTRAINT "FK_TenantRoutes_Tenants_TenantCode"; + +ALTER TABLE "Tenants" DROP CONSTRAINT "AK_Tenants_TenantCode"; + +DROP INDEX "IX_TenantRoutes_TenantCode_ServiceName"; + +ALTER TABLE "TenantRoutes" ADD "IsGlobal" boolean NOT NULL DEFAULT FALSE; + +CREATE INDEX "IX_TenantRoutes_ServiceName" ON "TenantRoutes" ("ServiceName"); + +CREATE INDEX "IX_TenantRoutes_ServiceName_IsGlobal_Status" ON "TenantRoutes" ("ServiceName", "IsGlobal", "Status"); + +CREATE INDEX "IX_TenantRoutes_TenantCode" ON "TenantRoutes" ("TenantCode"); + +INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion") +VALUES ('20260201133826_AddIsGlobalToTenantRoute', '9.0.0'); + +COMMIT; + diff --git a/Models/GwServiceInstance.cs b/Models/GwServiceInstance.cs new file mode 100644 index 0000000..d6a7a79 --- /dev/null +++ b/Models/GwServiceInstance.cs @@ -0,0 +1,18 @@ +namespace YarpGateway.Models; + +public class GwServiceInstance +{ + public long Id { get; set; } + public string ClusterId { get; set; } = string.Empty; + public string DestinationId { get; set; } = string.Empty; + public string Address { get; set; } = string.Empty; + public int Health { get; set; } = 1; + public int Weight { get; set; } = 1; + public int Status { get; set; } = 1; + public long? CreatedBy { get; set; } + public DateTime CreatedTime { get; set; } = DateTime.UtcNow; + public long? UpdatedBy { get; set; } + public DateTime? UpdatedTime { get; set; } + public bool IsDeleted { get; set; } = false; + public int Version { get; set; } = 0; +} diff --git a/Models/GwTenant.cs b/Models/GwTenant.cs new file mode 100644 index 0000000..7ce5997 --- /dev/null +++ b/Models/GwTenant.cs @@ -0,0 +1,15 @@ +namespace YarpGateway.Models; + +public class GwTenant +{ + public long Id { get; set; } + public string TenantCode { get; set; } = string.Empty; + public string TenantName { get; set; } = string.Empty; + public int Status { get; set; } = 1; + public long? CreatedBy { get; set; } + public DateTime CreatedTime { get; set; } = DateTime.UtcNow; + public long? UpdatedBy { get; set; } + public DateTime? UpdatedTime { get; set; } + public bool IsDeleted { get; set; } = false; + public int Version { get; set; } = 0; +} diff --git a/Models/GwTenantRoute.cs b/Models/GwTenantRoute.cs new file mode 100644 index 0000000..6a6a918 --- /dev/null +++ b/Models/GwTenantRoute.cs @@ -0,0 +1,19 @@ +namespace YarpGateway.Models; + +public class GwTenantRoute +{ + public long Id { get; set; } + public string TenantCode { get; set; } = string.Empty; + public string ServiceName { get; set; } = string.Empty; + public string ClusterId { get; set; } = string.Empty; + public string PathPattern { get; set; } = string.Empty; + public int Priority { get; set; } = 0; + public int Status { get; set; } = 1; + public bool IsGlobal { get; set; } = false; + public long? CreatedBy { get; set; } + public DateTime CreatedTime { get; set; } = DateTime.UtcNow; + public long? UpdatedBy { get; set; } + public DateTime? UpdatedTime { get; set; } + public bool IsDeleted { get; set; } = false; + public int Version { get; set; } = 0; +} diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..dd2983a --- /dev/null +++ b/Program.cs @@ -0,0 +1,113 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; +using Serilog; +using Yarp.ReverseProxy.Configuration; +using Yarp.ReverseProxy.LoadBalancing; +using YarpGateway.Config; +using YarpGateway.Data; +using YarpGateway.DynamicProxy; +using YarpGateway.LoadBalancing; +using YarpGateway.Middleware; +using YarpGateway.Services; +using StackExchange.Redis; + +var builder = WebApplication.CreateBuilder(args); + +builder.Host.UseSerilog( + (context, services, configuration) => + configuration + .ReadFrom.Configuration(context.Configuration) + .ReadFrom.Services(services) + .Enrich.FromLogContext() +); + +builder.Services.Configure(builder.Configuration.GetSection("Jwt")); +builder.Services.Configure(builder.Configuration.GetSection("Redis")); +builder.Services.AddSingleton(sp => sp.GetRequiredService>().Value); + +builder.Services.AddDbContextFactory(options => + options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")) +); + +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); + +builder.Services.AddSingleton(); +builder.Services.AddSingleton(sp => +{ + var config = sp.GetRequiredService(); + var connectionOptions = ConfigurationOptions.Parse(config.ConnectionString); + connectionOptions.AbortOnConnectFail = false; + connectionOptions.ConnectRetry = 3; + connectionOptions.ConnectTimeout = 5000; + connectionOptions.SyncTimeout = 3000; + connectionOptions.DefaultDatabase = config.Database; + + var connection = ConnectionMultiplexer.Connect(connectionOptions); + connection.ConnectionFailed += (sender, e) => + { + Serilog.Log.Error(e.Exception, "Redis connection failed"); + }; + connection.ConnectionRestored += (sender, e) => + { + Serilog.Log.Information("Redis connection restored"); + }; + + return connection; +}); + +builder.Services.AddSingleton(); + +builder.Services.AddSingleton(); +builder.Services.AddSingleton(sp => sp.GetRequiredService()); + +var corsSettings = builder.Configuration.GetSection("Cors"); +builder.Services.AddCors(options => +{ + var allowAnyOrigin = corsSettings.GetValue("AllowAnyOrigin"); + var allowedOrigins = corsSettings.GetSection("AllowedOrigins").Get() ?? Array.Empty(); + + options.AddPolicy("AllowFrontend", policy => + { + if (allowAnyOrigin) + { + policy.AllowAnyOrigin(); + } + else + { + policy.WithOrigins(allowedOrigins); + } + + policy.AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); +}); + +builder.Services.AddControllers(); + +var app = builder.Build(); + +app.UseCors("AllowFrontend"); +app.UseMiddleware(); +app.UseMiddleware(); + +app.MapControllers(); +app.MapReverseProxy(); + +await app.Services.GetRequiredService().InitializeAsync(); + +try +{ + Log.Information("Starting YARP Gateway"); + app.Run(); +} +catch (Exception ex) +{ + Log.Fatal(ex, "Application terminated unexpectedly"); +} +finally +{ + Log.CloseAndFlush(); +} diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json new file mode 100644 index 0000000..149e051 --- /dev/null +++ b/Properties/launchSettings.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "http://localhost:5046", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Services/RedisConnectionManager.cs b/Services/RedisConnectionManager.cs new file mode 100644 index 0000000..e393bc6 --- /dev/null +++ b/Services/RedisConnectionManager.cs @@ -0,0 +1,138 @@ +using StackExchange.Redis; +using System.Diagnostics; +using Microsoft.Extensions.Logging; +using YarpGateway.Config; + +namespace YarpGateway.Services; + +public interface IRedisConnectionManager +{ + IConnectionMultiplexer GetConnection(); + Task AcquireLockAsync(string key, TimeSpan? expiry = null); + Task ExecuteInLockAsync(string key, Func> func, TimeSpan? expiry = null); +} + +public class RedisConnectionManager : IRedisConnectionManager +{ + private readonly Lazy _lazyConnection; + private readonly RedisConfig _config; + private readonly ILogger _logger; + + public RedisConnectionManager(RedisConfig config, ILogger logger) + { + _config = config; + _logger = logger; + _lazyConnection = new Lazy(() => + { + var configuration = ConfigurationOptions.Parse(_config.ConnectionString); + configuration.AbortOnConnectFail = false; + configuration.ConnectRetry = 3; + configuration.ConnectTimeout = 5000; + configuration.SyncTimeout = 3000; + configuration.DefaultDatabase = _config.Database; + + var connection = ConnectionMultiplexer.Connect(configuration); + connection.ConnectionRestored += (sender, e) => + { + _logger.LogInformation("Redis connection restored"); + }; + connection.ConnectionFailed += (sender, e) => + { + _logger.LogError(e.Exception, "Redis connection failed"); + }; + + _logger.LogInformation("Connected to Redis at {ConnectionString}", _config.ConnectionString); + return connection; + }); + } + + public IConnectionMultiplexer GetConnection() + { + return _lazyConnection.Value; + } + + public async Task AcquireLockAsync(string key, TimeSpan? expiry = null) + { + var expiryTime = expiry ?? TimeSpan.FromSeconds(10); + var redis = GetConnection(); + var db = redis.GetDatabase(); + var lockKey = $"lock:{_config.InstanceName}:{key}"; + + var lockValue = Environment.MachineName + ":" + Process.GetCurrentProcess().Id; + var acquired = await db.StringSetAsync(lockKey, lockValue, expiryTime, When.NotExists); + + if (!acquired) + { + var backoff = TimeSpan.FromMilliseconds(100); + var retryCount = 0; + const int maxRetries = 50; + + while (!acquired && retryCount < maxRetries) + { + await Task.Delay(backoff); + acquired = await db.StringSetAsync(lockKey, lockValue, expiryTime, When.NotExists); + retryCount++; + if (retryCount < 10) + { + backoff = TimeSpan.FromMilliseconds(100 * (retryCount + 1)); + } + } + + if (!acquired) + { + throw new TimeoutException($"Failed to acquire lock for key: {lockKey}"); + } + } + + return new RedisLock(db, lockKey, lockValue, _logger); + } + + public async Task ExecuteInLockAsync(string key, Func> func, TimeSpan? expiry = null) + { + using var @lock = await AcquireLockAsync(key, expiry); + return await func(); + } + + private class RedisLock : IDisposable + { + private readonly IDatabase _db; + private readonly string _key; + private readonly string _value; + private readonly ILogger _logger; + private bool _disposed; + + public RedisLock(IDatabase db, string key, string value, ILogger logger) + { + _db = db; + _key = key; + _value = value; + _logger = logger; + } + + public void Dispose() + { + if (_disposed) return; + + try + { + var script = @" + if redis.call('GET', KEYS[1]) == ARGV[1] then + return redis.call('DEL', KEYS[1]) + else + return 0 + end"; + + _db.ScriptEvaluate(script, new RedisKey[] { _key }, new RedisValue[] { _value }); + _logger.LogDebug("Released lock for key: {Key}", _key); + } + catch (Exception ex) + { + _logger.LogError(ex, "Failed to release lock for key: {Key}", _key); + } + finally + { + _disposed = true; + } + } + } +} diff --git a/Services/RouteCache.cs b/Services/RouteCache.cs new file mode 100644 index 0000000..aa9a026 --- /dev/null +++ b/Services/RouteCache.cs @@ -0,0 +1,138 @@ +using System.Collections.Concurrent; +using YarpGateway.Models; +using YarpGateway.Data; +using Microsoft.Extensions.Logging; +using Microsoft.EntityFrameworkCore; + +namespace YarpGateway.Services; + +public class RouteInfo +{ + public long Id { get; set; } + public string ClusterId { get; set; } = string.Empty; + public string PathPattern { get; set; } = string.Empty; + public int Priority { get; set; } + public bool IsGlobal { get; set; } +} + +public interface IRouteCache +{ + Task InitializeAsync(); + Task ReloadAsync(); + RouteInfo? GetRoute(string tenantCode, string serviceName); + RouteInfo? GetRouteByPath(string path); +} + +public class RouteCache : IRouteCache +{ + private readonly IDbContextFactory _dbContextFactory; + private readonly ILogger _logger; + + private readonly ConcurrentDictionary _globalRoutes = new(); + private readonly ConcurrentDictionary> _tenantRoutes = new(); + private readonly ConcurrentDictionary _pathRoutes = new(); + private readonly ReaderWriterLockSlim _lock = new(); + + public RouteCache(IDbContextFactory dbContextFactory, ILogger logger) + { + _dbContextFactory = dbContextFactory; + _logger = logger; + } + + public async Task InitializeAsync() + { + _logger.LogInformation("Initializing route cache from database..."); + await LoadFromDatabaseAsync(); + _logger.LogInformation("Route cache initialized: {GlobalCount} global routes, {TenantCount} tenant routes", + _globalRoutes.Count, _tenantRoutes.Count); + } + + public async Task ReloadAsync() + { + _logger.LogInformation("Reloading route cache..."); + await LoadFromDatabaseAsync(); + _logger.LogInformation("Route cache reloaded"); + } + + public RouteInfo? GetRoute(string tenantCode, string serviceName) + { + _lock.EnterUpgradeableReadLock(); + try + { + // 1. 优先查找租户专用路由 + if (_tenantRoutes.TryGetValue(tenantCode, out var tenantRouteMap) && + tenantRouteMap.TryGetValue(serviceName, out var tenantRoute)) + { + _logger.LogDebug("Found tenant-specific route: {Tenant}/{Service} -> {Cluster}", + tenantCode, serviceName, tenantRoute.ClusterId); + return tenantRoute; + } + + // 2. 查找全局路由 + if (_globalRoutes.TryGetValue(serviceName, out var globalRoute)) + { + _logger.LogDebug("Found global route: {Service} -> {Cluster} for tenant {Tenant}", + serviceName, globalRoute.ClusterId, tenantCode); + return globalRoute; + } + + // 3. 没找到 + _logger.LogWarning("No route found for: {Tenant}/{Service}", tenantCode, serviceName); + return null; + } + finally + { + _lock.ExitUpgradeableReadLock(); + } + } + + public RouteInfo? GetRouteByPath(string path) + { + return _pathRoutes.TryGetValue(path, out var route) ? route : null; + } + + private async Task LoadFromDatabaseAsync() + { + using var db = _dbContextFactory.CreateDbContext(); + + var routes = await db.TenantRoutes + .Where(r => r.Status == 1 && !r.IsDeleted) + .ToListAsync(); + + _lock.EnterWriteLock(); + try + { + _globalRoutes.Clear(); + _tenantRoutes.Clear(); + _pathRoutes.Clear(); + + foreach (var route in routes) + { + var routeInfo = new RouteInfo + { + Id = route.Id, + ClusterId = route.ClusterId, + PathPattern = route.PathPattern, + Priority = route.Priority, + IsGlobal = route.IsGlobal + }; + + if (route.IsGlobal) + { + _globalRoutes[route.ServiceName] = routeInfo; + _pathRoutes[route.PathPattern] = routeInfo; + } + else if (!string.IsNullOrEmpty(route.TenantCode)) + { + _tenantRoutes.GetOrAdd(route.TenantCode, _ => new()) + [route.ServiceName] = routeInfo; + _pathRoutes[route.PathPattern] = routeInfo; + } + } + } + finally + { + _lock.ExitWriteLock(); + } + } +} diff --git a/YarpGateway.csproj b/YarpGateway.csproj new file mode 100644 index 0000000..a498881 --- /dev/null +++ b/YarpGateway.csproj @@ -0,0 +1,23 @@ + + + + net10.0 + enable + enable + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + diff --git a/appsettings.Development.json b/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/appsettings.json b/appsettings.json new file mode 100644 index 0000000..18088e8 --- /dev/null +++ b/appsettings.json @@ -0,0 +1,64 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning", + "Yarp.ReverseProxy": "Information" + } + }, + "AllowedHosts": "*", + "Cors": { + "AllowedOrigins": [ + "http://localhost:5173", + "http://127.0.0.1:5173", + "http://localhost:5174" + ], + "AllowAnyOrigin": false + }, + "ConnectionStrings": { + "DefaultConnection": "Host=192.168.100.10;Port=5432;Database=fengling_gateway;Username=movingsam;Password=sl52788542" + }, + "Jwt": { + "Authority": "https://your-auth-server.com", + "Audience": "fengling-gateway", + "ValidateIssuer": true, + "ValidateAudience": true + }, + "Redis": { + "ConnectionString": "192.168.100.10:6379", + "Database": 0, + "InstanceName": "YarpGateway" + }, + "ReverseProxy": { + "Routes": {}, + "Clusters": {} + }, + "Serilog": { + "Using": ["Serilog.Sinks.Console", "Serilog.Sinks.File"], + "MinimumLevel": "Information", + "WriteTo": [ + { + "Name": "Console", + "Args": { + "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "logs/gateway-.log", + "rollingInterval": "Day", + "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}" + } + } + ], + "Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"] + }, + "Kestrel": { + "Endpoints": { + "Http": { + "Url": "http://0.0.0.0:8080" + } + } + } +} diff --git a/bin/Debug/net10.0/Humanizer.dll b/bin/Debug/net10.0/Humanizer.dll new file mode 100755 index 0000000..c9a7ef8 Binary files /dev/null and b/bin/Debug/net10.0/Humanizer.dll differ diff --git a/bin/Debug/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll b/bin/Debug/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll new file mode 100755 index 0000000..d6dda11 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll differ diff --git a/bin/Debug/net10.0/Microsoft.Bcl.AsyncInterfaces.dll b/bin/Debug/net10.0/Microsoft.Bcl.AsyncInterfaces.dll new file mode 100755 index 0000000..f5f1cee Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.Bcl.AsyncInterfaces.dll differ diff --git a/bin/Debug/net10.0/Microsoft.Build.Locator.dll b/bin/Debug/net10.0/Microsoft.Build.Locator.dll new file mode 100755 index 0000000..446d341 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.Build.Locator.dll differ diff --git a/bin/Debug/net10.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll b/bin/Debug/net10.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll new file mode 100755 index 0000000..2e99f76 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll differ diff --git a/bin/Debug/net10.0/Microsoft.CodeAnalysis.CSharp.dll b/bin/Debug/net10.0/Microsoft.CodeAnalysis.CSharp.dll new file mode 100755 index 0000000..8d56de1 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.CodeAnalysis.CSharp.dll differ diff --git a/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll b/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll new file mode 100755 index 0000000..a17c676 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll differ diff --git a/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll b/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll new file mode 100755 index 0000000..f70a016 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll differ diff --git a/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.dll b/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.dll new file mode 100755 index 0000000..7253875 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.dll differ diff --git a/bin/Debug/net10.0/Microsoft.CodeAnalysis.dll b/bin/Debug/net10.0/Microsoft.CodeAnalysis.dll new file mode 100755 index 0000000..7d537db Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.CodeAnalysis.dll differ diff --git a/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Abstractions.dll b/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Abstractions.dll new file mode 100755 index 0000000..e5b92b5 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Abstractions.dll differ diff --git a/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Design.dll b/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Design.dll new file mode 100755 index 0000000..41cf45a Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Design.dll differ diff --git a/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Relational.dll b/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Relational.dll new file mode 100755 index 0000000..7e313e5 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Relational.dll differ diff --git a/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.dll b/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.dll new file mode 100755 index 0000000..f362a04 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.dll differ diff --git a/bin/Debug/net10.0/Microsoft.Extensions.DependencyModel.dll b/bin/Debug/net10.0/Microsoft.Extensions.DependencyModel.dll new file mode 100755 index 0000000..e8ee78b Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.Extensions.DependencyModel.dll differ diff --git a/bin/Debug/net10.0/Microsoft.IdentityModel.Abstractions.dll b/bin/Debug/net10.0/Microsoft.IdentityModel.Abstractions.dll new file mode 100755 index 0000000..e981f87 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.IdentityModel.Abstractions.dll differ diff --git a/bin/Debug/net10.0/Microsoft.IdentityModel.JsonWebTokens.dll b/bin/Debug/net10.0/Microsoft.IdentityModel.JsonWebTokens.dll new file mode 100755 index 0000000..25f2a7e Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.IdentityModel.JsonWebTokens.dll differ diff --git a/bin/Debug/net10.0/Microsoft.IdentityModel.Logging.dll b/bin/Debug/net10.0/Microsoft.IdentityModel.Logging.dll new file mode 100755 index 0000000..4ffdb25 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.IdentityModel.Logging.dll differ diff --git a/bin/Debug/net10.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll b/bin/Debug/net10.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll new file mode 100755 index 0000000..6c736d2 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll differ diff --git a/bin/Debug/net10.0/Microsoft.IdentityModel.Protocols.dll b/bin/Debug/net10.0/Microsoft.IdentityModel.Protocols.dll new file mode 100755 index 0000000..9f30508 Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.IdentityModel.Protocols.dll differ diff --git a/bin/Debug/net10.0/Microsoft.IdentityModel.Tokens.dll b/bin/Debug/net10.0/Microsoft.IdentityModel.Tokens.dll new file mode 100755 index 0000000..83ec83a Binary files /dev/null and b/bin/Debug/net10.0/Microsoft.IdentityModel.Tokens.dll differ diff --git a/bin/Debug/net10.0/Mono.TextTemplating.dll b/bin/Debug/net10.0/Mono.TextTemplating.dll new file mode 100755 index 0000000..4a76511 Binary files /dev/null and b/bin/Debug/net10.0/Mono.TextTemplating.dll differ diff --git a/bin/Debug/net10.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll b/bin/Debug/net10.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll new file mode 100755 index 0000000..fe1d2e1 Binary files /dev/null and b/bin/Debug/net10.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll differ diff --git a/bin/Debug/net10.0/Npgsql.dll b/bin/Debug/net10.0/Npgsql.dll new file mode 100755 index 0000000..5ab8f57 Binary files /dev/null and b/bin/Debug/net10.0/Npgsql.dll differ diff --git a/bin/Debug/net10.0/Pipelines.Sockets.Unofficial.dll b/bin/Debug/net10.0/Pipelines.Sockets.Unofficial.dll new file mode 100755 index 0000000..c5b223d Binary files /dev/null and b/bin/Debug/net10.0/Pipelines.Sockets.Unofficial.dll differ diff --git a/bin/Debug/net10.0/Serilog.AspNetCore.dll b/bin/Debug/net10.0/Serilog.AspNetCore.dll new file mode 100755 index 0000000..36794d4 Binary files /dev/null and b/bin/Debug/net10.0/Serilog.AspNetCore.dll differ diff --git a/bin/Debug/net10.0/Serilog.Extensions.Hosting.dll b/bin/Debug/net10.0/Serilog.Extensions.Hosting.dll new file mode 100755 index 0000000..2204d10 Binary files /dev/null and b/bin/Debug/net10.0/Serilog.Extensions.Hosting.dll differ diff --git a/bin/Debug/net10.0/Serilog.Extensions.Logging.dll b/bin/Debug/net10.0/Serilog.Extensions.Logging.dll new file mode 100755 index 0000000..f2f78c7 Binary files /dev/null and b/bin/Debug/net10.0/Serilog.Extensions.Logging.dll differ diff --git a/bin/Debug/net10.0/Serilog.Formatting.Compact.dll b/bin/Debug/net10.0/Serilog.Formatting.Compact.dll new file mode 100755 index 0000000..7174b83 Binary files /dev/null and b/bin/Debug/net10.0/Serilog.Formatting.Compact.dll differ diff --git a/bin/Debug/net10.0/Serilog.Settings.Configuration.dll b/bin/Debug/net10.0/Serilog.Settings.Configuration.dll new file mode 100755 index 0000000..a8ff29d Binary files /dev/null and b/bin/Debug/net10.0/Serilog.Settings.Configuration.dll differ diff --git a/bin/Debug/net10.0/Serilog.Sinks.Console.dll b/bin/Debug/net10.0/Serilog.Sinks.Console.dll new file mode 100755 index 0000000..96c89a0 Binary files /dev/null and b/bin/Debug/net10.0/Serilog.Sinks.Console.dll differ diff --git a/bin/Debug/net10.0/Serilog.Sinks.Debug.dll b/bin/Debug/net10.0/Serilog.Sinks.Debug.dll new file mode 100755 index 0000000..2bd024b Binary files /dev/null and b/bin/Debug/net10.0/Serilog.Sinks.Debug.dll differ diff --git a/bin/Debug/net10.0/Serilog.Sinks.File.dll b/bin/Debug/net10.0/Serilog.Sinks.File.dll new file mode 100755 index 0000000..17d80f3 Binary files /dev/null and b/bin/Debug/net10.0/Serilog.Sinks.File.dll differ diff --git a/bin/Debug/net10.0/Serilog.dll b/bin/Debug/net10.0/Serilog.dll new file mode 100755 index 0000000..28c98dd Binary files /dev/null and b/bin/Debug/net10.0/Serilog.dll differ diff --git a/bin/Debug/net10.0/StackExchange.Redis.dll b/bin/Debug/net10.0/StackExchange.Redis.dll new file mode 100755 index 0000000..e6f45a3 Binary files /dev/null and b/bin/Debug/net10.0/StackExchange.Redis.dll differ diff --git a/bin/Debug/net10.0/System.CodeDom.dll b/bin/Debug/net10.0/System.CodeDom.dll new file mode 100755 index 0000000..54c82b6 Binary files /dev/null and b/bin/Debug/net10.0/System.CodeDom.dll differ diff --git a/bin/Debug/net10.0/System.Composition.AttributedModel.dll b/bin/Debug/net10.0/System.Composition.AttributedModel.dll new file mode 100755 index 0000000..1431751 Binary files /dev/null and b/bin/Debug/net10.0/System.Composition.AttributedModel.dll differ diff --git a/bin/Debug/net10.0/System.Composition.Convention.dll b/bin/Debug/net10.0/System.Composition.Convention.dll new file mode 100755 index 0000000..e9dacb1 Binary files /dev/null and b/bin/Debug/net10.0/System.Composition.Convention.dll differ diff --git a/bin/Debug/net10.0/System.Composition.Hosting.dll b/bin/Debug/net10.0/System.Composition.Hosting.dll new file mode 100755 index 0000000..8381202 Binary files /dev/null and b/bin/Debug/net10.0/System.Composition.Hosting.dll differ diff --git a/bin/Debug/net10.0/System.Composition.Runtime.dll b/bin/Debug/net10.0/System.Composition.Runtime.dll new file mode 100755 index 0000000..d583c3a Binary files /dev/null and b/bin/Debug/net10.0/System.Composition.Runtime.dll differ diff --git a/bin/Debug/net10.0/System.Composition.TypedParts.dll b/bin/Debug/net10.0/System.Composition.TypedParts.dll new file mode 100755 index 0000000..2b278d7 Binary files /dev/null and b/bin/Debug/net10.0/System.Composition.TypedParts.dll differ diff --git a/bin/Debug/net10.0/System.IO.Hashing.dll b/bin/Debug/net10.0/System.IO.Hashing.dll new file mode 100755 index 0000000..233a5c8 Binary files /dev/null and b/bin/Debug/net10.0/System.IO.Hashing.dll differ diff --git a/bin/Debug/net10.0/System.IdentityModel.Tokens.Jwt.dll b/bin/Debug/net10.0/System.IdentityModel.Tokens.Jwt.dll new file mode 100755 index 0000000..c42b8d7 Binary files /dev/null and b/bin/Debug/net10.0/System.IdentityModel.Tokens.Jwt.dll differ diff --git a/bin/Debug/net10.0/Yarp.ReverseProxy.dll b/bin/Debug/net10.0/Yarp.ReverseProxy.dll new file mode 100755 index 0000000..ce5217f Binary files /dev/null and b/bin/Debug/net10.0/Yarp.ReverseProxy.dll differ diff --git a/bin/Debug/net10.0/YarpGateway b/bin/Debug/net10.0/YarpGateway new file mode 100755 index 0000000..23ce3dc Binary files /dev/null and b/bin/Debug/net10.0/YarpGateway differ diff --git a/bin/Debug/net10.0/YarpGateway.deps.json b/bin/Debug/net10.0/YarpGateway.deps.json new file mode 100644 index 0000000..777e5ff --- /dev/null +++ b/bin/Debug/net10.0/YarpGateway.deps.json @@ -0,0 +1,1019 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v10.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v10.0": { + "YarpGateway/1.0.0": { + "dependencies": { + "Microsoft.AspNetCore.Authentication.JwtBearer": "10.0.0", + "Microsoft.EntityFrameworkCore.Design": "9.0.0", + "Npgsql.EntityFrameworkCore.PostgreSQL": "9.0.0", + "Serilog.AspNetCore": "8.0.0", + "Serilog.Sinks.Console": "6.0.0", + "Serilog.Sinks.File": "6.0.0", + "StackExchange.Redis": "2.8.16", + "Yarp.ReverseProxy": "2.2.0" + }, + "runtime": { + "YarpGateway.dll": {} + } + }, + "Humanizer.Core/2.14.1": { + "runtime": { + "lib/net6.0/Humanizer.dll": { + "assemblyVersion": "2.14.0.0", + "fileVersion": "2.14.1.48190" + } + } + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/10.0.0": { + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.0.1" + }, + "runtime": { + "lib/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.25.52411" + } + } + }, + "Microsoft.Bcl.AsyncInterfaces/7.0.0": { + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "7.0.22.51805" + } + } + }, + "Microsoft.Build.Locator/1.7.8": { + "runtime": { + "lib/net6.0/Microsoft.Build.Locator.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.7.8.28074" + } + } + }, + "Microsoft.CodeAnalysis.Common/4.8.0": { + "runtime": { + "lib/net7.0/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "4.8.0.0", + "fileVersion": "4.800.23.55801" + } + }, + "resources": { + "lib/net7.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/net7.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/net7.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/net7.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/net7.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/net7.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/net7.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/net7.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/net7.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/net7.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.8.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Common": "4.8.0" + }, + "runtime": { + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "4.8.0.0", + "fileVersion": "4.800.23.55801" + } + }, + "resources": { + "lib/net7.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/net7.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/net7.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/net7.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/net7.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/net7.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/net7.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/net7.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/net7.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/net7.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.8.0": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp": "4.8.0", + "Microsoft.CodeAnalysis.Common": "4.8.0", + "Microsoft.CodeAnalysis.Workspaces.Common": "4.8.0" + }, + "runtime": { + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "assemblyVersion": "4.8.0.0", + "fileVersion": "4.800.23.55801" + } + }, + "resources": { + "lib/net7.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/net7.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/net7.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/net7.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/net7.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/net7.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/net7.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/net7.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/net7.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/net7.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.8.0": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Bcl.AsyncInterfaces": "7.0.0", + "Microsoft.CodeAnalysis.Common": "4.8.0", + "System.Composition": "7.0.0" + }, + "runtime": { + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.dll": { + "assemblyVersion": "4.8.0.0", + "fileVersion": "4.800.23.55801" + } + }, + "resources": { + "lib/net7.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/net7.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/net7.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/net7.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/net7.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/net7.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/net7.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/net7.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/net7.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/net7.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.MSBuild/4.8.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Common": "4.8.0", + "Microsoft.CodeAnalysis.Workspaces.Common": "4.8.0" + }, + "runtime": { + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll": { + "assemblyVersion": "4.8.0.0", + "fileVersion": "4.800.23.55801" + }, + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll": { + "assemblyVersion": "4.8.0.0", + "fileVersion": "4.800.23.55801" + } + }, + "resources": { + "lib/net7.0/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "cs" + }, + "lib/net7.0/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "de" + }, + "lib/net7.0/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "es" + }, + "lib/net7.0/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "fr" + }, + "lib/net7.0/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "it" + }, + "lib/net7.0/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "ja" + }, + "lib/net7.0/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "ko" + }, + "lib/net7.0/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "pl" + }, + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "pt-BR" + }, + "lib/net7.0/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "ru" + }, + "lib/net7.0/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "tr" + }, + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.EntityFrameworkCore/9.0.0": { + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "9.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52902" + } + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/9.0.0": { + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52902" + } + } + }, + "Microsoft.EntityFrameworkCore.Design/9.0.0": { + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Build.Locator": "1.7.8", + "Microsoft.CodeAnalysis.CSharp": "4.8.0", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "4.8.0", + "Microsoft.CodeAnalysis.Workspaces.MSBuild": "4.8.0", + "Microsoft.EntityFrameworkCore.Relational": "9.0.0", + "Microsoft.Extensions.DependencyModel": "9.0.0", + "Mono.TextTemplating": "3.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52902" + } + } + }, + "Microsoft.EntityFrameworkCore.Relational/9.0.0": { + "dependencies": { + "Microsoft.EntityFrameworkCore": "9.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52902" + } + } + }, + "Microsoft.Extensions.DependencyModel/9.0.0": { + "runtime": { + "lib/net9.0/Microsoft.Extensions.DependencyModel.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.24.52809" + } + } + }, + "Microsoft.IdentityModel.Abstractions/8.0.1": { + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": { + "assemblyVersion": "8.0.1.0", + "fileVersion": "8.0.1.50722" + } + } + }, + "Microsoft.IdentityModel.JsonWebTokens/8.0.1": { + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.0.1" + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "assemblyVersion": "8.0.1.0", + "fileVersion": "8.0.1.50722" + } + } + }, + "Microsoft.IdentityModel.Logging/8.0.1": { + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.0.1" + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.Logging.dll": { + "assemblyVersion": "8.0.1.0", + "fileVersion": "8.0.1.50722" + } + } + }, + "Microsoft.IdentityModel.Protocols/8.0.1": { + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.0.1" + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.Protocols.dll": { + "assemblyVersion": "8.0.1.0", + "fileVersion": "8.0.1.50722" + } + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/8.0.1": { + "dependencies": { + "Microsoft.IdentityModel.Protocols": "8.0.1", + "System.IdentityModel.Tokens.Jwt": "8.0.1" + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "assemblyVersion": "8.0.1.0", + "fileVersion": "8.0.1.50722" + } + } + }, + "Microsoft.IdentityModel.Tokens/8.0.1": { + "dependencies": { + "Microsoft.IdentityModel.Logging": "8.0.1" + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": { + "assemblyVersion": "8.0.1.0", + "fileVersion": "8.0.1.50722" + } + } + }, + "Mono.TextTemplating/3.0.0": { + "dependencies": { + "System.CodeDom": "6.0.0" + }, + "runtime": { + "lib/net6.0/Mono.TextTemplating.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "3.0.0.1" + } + } + }, + "Npgsql/9.0.0": { + "runtime": { + "lib/net8.0/Npgsql.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.0.0" + } + } + }, + "Npgsql.EntityFrameworkCore.PostgreSQL/9.0.0": { + "dependencies": { + "Microsoft.EntityFrameworkCore": "9.0.0", + "Microsoft.EntityFrameworkCore.Relational": "9.0.0", + "Npgsql": "9.0.0" + }, + "runtime": { + "lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": { + "assemblyVersion": "9.0.0.0", + "fileVersion": "9.0.0.0" + } + } + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "runtime": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "2.2.8.1080" + } + } + }, + "Serilog/4.0.0": { + "runtime": { + "lib/net8.0/Serilog.dll": { + "assemblyVersion": "4.0.0.0", + "fileVersion": "4.0.0.0" + } + } + }, + "Serilog.AspNetCore/8.0.0": { + "dependencies": { + "Serilog": "4.0.0", + "Serilog.Extensions.Hosting": "8.0.0", + "Serilog.Extensions.Logging": "8.0.0", + "Serilog.Formatting.Compact": "2.0.0", + "Serilog.Settings.Configuration": "8.0.0", + "Serilog.Sinks.Console": "6.0.0", + "Serilog.Sinks.Debug": "2.0.0", + "Serilog.Sinks.File": "6.0.0" + }, + "runtime": { + "lib/net8.0/Serilog.AspNetCore.dll": { + "assemblyVersion": "0.0.0.0", + "fileVersion": "8.0.0.0" + } + } + }, + "Serilog.Extensions.Hosting/8.0.0": { + "dependencies": { + "Serilog": "4.0.0", + "Serilog.Extensions.Logging": "8.0.0" + }, + "runtime": { + "lib/net8.0/Serilog.Extensions.Hosting.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "8.0.0.0" + } + } + }, + "Serilog.Extensions.Logging/8.0.0": { + "dependencies": { + "Serilog": "4.0.0" + }, + "runtime": { + "lib/net8.0/Serilog.Extensions.Logging.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "8.0.0.0" + } + } + }, + "Serilog.Formatting.Compact/2.0.0": { + "dependencies": { + "Serilog": "4.0.0" + }, + "runtime": { + "lib/net7.0/Serilog.Formatting.Compact.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "Serilog.Settings.Configuration/8.0.0": { + "dependencies": { + "Microsoft.Extensions.DependencyModel": "9.0.0", + "Serilog": "4.0.0" + }, + "runtime": { + "lib/net8.0/Serilog.Settings.Configuration.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.0.0" + } + } + }, + "Serilog.Sinks.Console/6.0.0": { + "dependencies": { + "Serilog": "4.0.0" + }, + "runtime": { + "lib/net8.0/Serilog.Sinks.Console.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.0.0" + } + } + }, + "Serilog.Sinks.Debug/2.0.0": { + "dependencies": { + "Serilog": "4.0.0" + }, + "runtime": { + "lib/netstandard2.1/Serilog.Sinks.Debug.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.0.0.0" + } + } + }, + "Serilog.Sinks.File/6.0.0": { + "dependencies": { + "Serilog": "4.0.0" + }, + "runtime": { + "lib/net8.0/Serilog.Sinks.File.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.0.0" + } + } + }, + "StackExchange.Redis/2.8.16": { + "dependencies": { + "Pipelines.Sockets.Unofficial": "2.2.8" + }, + "runtime": { + "lib/net6.0/StackExchange.Redis.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.8.16.12844" + } + } + }, + "System.CodeDom/6.0.0": { + "runtime": { + "lib/net6.0/System.CodeDom.dll": { + "assemblyVersion": "6.0.0.0", + "fileVersion": "6.0.21.52210" + } + } + }, + "System.Composition/7.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "7.0.0", + "System.Composition.Convention": "7.0.0", + "System.Composition.Hosting": "7.0.0", + "System.Composition.Runtime": "7.0.0", + "System.Composition.TypedParts": "7.0.0" + } + }, + "System.Composition.AttributedModel/7.0.0": { + "runtime": { + "lib/net7.0/System.Composition.AttributedModel.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "7.0.22.51805" + } + } + }, + "System.Composition.Convention/7.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "7.0.0" + }, + "runtime": { + "lib/net7.0/System.Composition.Convention.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "7.0.22.51805" + } + } + }, + "System.Composition.Hosting/7.0.0": { + "dependencies": { + "System.Composition.Runtime": "7.0.0" + }, + "runtime": { + "lib/net7.0/System.Composition.Hosting.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "7.0.22.51805" + } + } + }, + "System.Composition.Runtime/7.0.0": { + "runtime": { + "lib/net7.0/System.Composition.Runtime.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "7.0.22.51805" + } + } + }, + "System.Composition.TypedParts/7.0.0": { + "dependencies": { + "System.Composition.AttributedModel": "7.0.0", + "System.Composition.Hosting": "7.0.0", + "System.Composition.Runtime": "7.0.0" + }, + "runtime": { + "lib/net7.0/System.Composition.TypedParts.dll": { + "assemblyVersion": "7.0.0.0", + "fileVersion": "7.0.22.51805" + } + } + }, + "System.IdentityModel.Tokens.Jwt/8.0.1": { + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "8.0.1", + "Microsoft.IdentityModel.Tokens": "8.0.1" + }, + "runtime": { + "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": { + "assemblyVersion": "8.0.1.0", + "fileVersion": "8.0.1.50722" + } + } + }, + "System.IO.Hashing/8.0.0": { + "runtime": { + "lib/net8.0/System.IO.Hashing.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.0.23.53103" + } + } + }, + "Yarp.ReverseProxy/2.2.0": { + "dependencies": { + "System.IO.Hashing": "8.0.0" + }, + "runtime": { + "lib/net8.0/Yarp.ReverseProxy.dll": { + "assemblyVersion": "2.2.0.0", + "fileVersion": "2.200.24.42901" + } + } + } + } + }, + "libraries": { + "YarpGateway/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Humanizer.Core/2.14.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==", + "path": "humanizer.core/2.14.1", + "hashPath": "humanizer.core.2.14.1.nupkg.sha512" + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/10.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-0BgDfT1GoZnzjJOBwx5vFMK5JtqsTEas9pCEwd1/KKxNUAqFmreN60WeUoF+CsmSd9tOQuqWedvdBo/QqHuNTQ==", + "path": "microsoft.aspnetcore.authentication.jwtbearer/10.0.0", + "hashPath": "microsoft.aspnetcore.authentication.jwtbearer.10.0.0.nupkg.sha512" + }, + "Microsoft.Bcl.AsyncInterfaces/7.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3aeMZ1N0lJoSyzqiP03hqemtb1BijhsJADdobn/4nsMJ8V1H+CrpuduUe4hlRdx+ikBQju1VGjMD1GJ3Sk05Eg==", + "path": "microsoft.bcl.asyncinterfaces/7.0.0", + "hashPath": "microsoft.bcl.asyncinterfaces.7.0.0.nupkg.sha512" + }, + "Microsoft.Build.Locator/1.7.8": { + "type": "package", + "serviceable": true, + "sha512": "sha512-sPy10x527Ph16S2u0yGME4S6ohBKJ69WfjeGG/bvELYeZVmJdKjxgnlL8cJJJLGV/cZIRqSfB12UDB8ICakOog==", + "path": "microsoft.build.locator/1.7.8", + "hashPath": "microsoft.build.locator.1.7.8.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/4.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/jR+e/9aT+BApoQJABlVCKnnggGQbvGh7BKq2/wI1LamxC+LbzhcLj4Vj7gXCofl1n4E521YfF9w0WcASGg/KA==", + "path": "microsoft.codeanalysis.common/4.8.0", + "hashPath": "microsoft.codeanalysis.common.4.8.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/4.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+3+qfdb/aaGD8PZRCrsdobbzGs1m9u119SkkJt8e/mk3xLJz/udLtS2T6nY27OTXxBBw10HzAbC8Z9w08VyP/g==", + "path": "microsoft.codeanalysis.csharp/4.8.0", + "hashPath": "microsoft.codeanalysis.csharp.4.8.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3amm4tq4Lo8/BGvg9p3BJh3S9nKq2wqCXfS7138i69TUpo/bD+XvD0hNurpEBtcNZhi1FyutiomKJqVF39ugYA==", + "path": "microsoft.codeanalysis.csharp.workspaces/4.8.0", + "hashPath": "microsoft.codeanalysis.csharp.workspaces.4.8.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LXyV+MJKsKRu3FGJA3OmSk40OUIa/dQCFLOnm5X8MNcujx7hzGu8o+zjXlb/cy5xUdZK2UKYb9YaQ2E8m9QehQ==", + "path": "microsoft.codeanalysis.workspaces.common/4.8.0", + "hashPath": "microsoft.codeanalysis.workspaces.common.4.8.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Workspaces.MSBuild/4.8.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-IEYreI82QZKklp54yPHxZNG9EKSK6nHEkeuf+0Asie9llgS1gp0V1hw7ODG+QyoB7MuAnNQHmeV1Per/ECpv6A==", + "path": "microsoft.codeanalysis.workspaces.msbuild/4.8.0", + "hashPath": "microsoft.codeanalysis.workspaces.msbuild.4.8.0.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-wpG+nfnfDAw87R3ovAsUmjr3MZ4tYXf6bFqEPVAIKE6IfPml3DS//iX0DBnf8kWn5ZHSO5oi1m4d/Jf+1LifJQ==", + "path": "microsoft.entityframeworkcore/9.0.0", + "hashPath": "microsoft.entityframeworkcore.9.0.0.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Abstractions/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fnmifFL8KaA4ZNLCVgfjCWhZUFxkrDInx5hR4qG7Q8IEaSiy/6VOSRFyx55oH7MV4y7wM3J3EE90nSpcVBI44Q==", + "path": "microsoft.entityframeworkcore.abstractions/9.0.0", + "hashPath": "microsoft.entityframeworkcore.abstractions.9.0.0.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Design/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Pqo8I+yHJ3VQrAoY0hiSncf+5P7gN/RkNilK5e+/K/yKh+yAWxdUAI6t0TG26a9VPlCa9FhyklzyFvRyj3YG9A==", + "path": "microsoft.entityframeworkcore.design/9.0.0", + "hashPath": "microsoft.entityframeworkcore.design.9.0.0.nupkg.sha512" + }, + "Microsoft.EntityFrameworkCore.Relational/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-j+msw6fWgAE9M3Q/5B9Uhv7pdAdAQUvFPJAiBJmoy+OXvehVbfbCE8ftMAa51Uo2ZeiqVnHShhnv4Y4UJJmUzA==", + "path": "microsoft.entityframeworkcore.relational/9.0.0", + "hashPath": "microsoft.entityframeworkcore.relational.9.0.0.nupkg.sha512" + }, + "Microsoft.Extensions.DependencyModel/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-saxr2XzwgDU77LaQfYFXmddEDRUKHF4DaGMZkNB3qjdVSZlax3//dGJagJkKrGMIPNZs2jVFXITyCCR6UHJNdA==", + "path": "microsoft.extensions.dependencymodel/9.0.0", + "hashPath": "microsoft.extensions.dependencymodel.9.0.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.Abstractions/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OtlIWcyX01olfdevPKZdIPfBEvbcioDyBiE/Z2lHsopsMD7twcKtlN9kMevHmI5IIPhFpfwCIiR6qHQz1WHUIw==", + "path": "microsoft.identitymodel.abstractions/8.0.1", + "hashPath": "microsoft.identitymodel.abstractions.8.0.1.nupkg.sha512" + }, + "Microsoft.IdentityModel.JsonWebTokens/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-s6++gF9x0rQApQzOBbSyp4jUaAlwm+DroKfL8gdOHxs83k8SJfUXhuc46rDB3rNXBQ1MVRxqKUrqFhO/M0E97g==", + "path": "microsoft.identitymodel.jsonwebtokens/8.0.1", + "hashPath": "microsoft.identitymodel.jsonwebtokens.8.0.1.nupkg.sha512" + }, + "Microsoft.IdentityModel.Logging/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UCPF2exZqBXe7v/6sGNiM6zCQOUXXQ9+v5VTb9gPB8ZSUPnX53BxlN78v2jsbIvK9Dq4GovQxo23x8JgWvm/Qg==", + "path": "microsoft.identitymodel.logging/8.0.1", + "hashPath": "microsoft.identitymodel.logging.8.0.1.nupkg.sha512" + }, + "Microsoft.IdentityModel.Protocols/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uA2vpKqU3I2mBBEaeJAWPTjT9v1TZrGWKdgK6G5qJd03CLx83kdiqO9cmiK8/n1erkHzFBwU/RphP83aAe3i3g==", + "path": "microsoft.identitymodel.protocols/8.0.1", + "hashPath": "microsoft.identitymodel.protocols.8.0.1.nupkg.sha512" + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AQDbfpL+yzuuGhO/mQhKNsp44pm5Jv8/BI4KiFXR7beVGZoSH35zMV3PrmcfvSTsyI6qrcR898NzUauD6SRigg==", + "path": "microsoft.identitymodel.protocols.openidconnect/8.0.1", + "hashPath": "microsoft.identitymodel.protocols.openidconnect.8.0.1.nupkg.sha512" + }, + "Microsoft.IdentityModel.Tokens/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kDimB6Dkd3nkW2oZPDkMkVHfQt3IDqO5gL0oa8WVy3OP4uE8Ij+8TXnqg9TOd9ufjsY3IDiGz7pCUbnfL18tjg==", + "path": "microsoft.identitymodel.tokens/8.0.1", + "hashPath": "microsoft.identitymodel.tokens.8.0.1.nupkg.sha512" + }, + "Mono.TextTemplating/3.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YqueG52R/Xej4VVbKuRIodjiAhV0HR/XVbLbNrJhCZnzjnSjgMJ/dCdV0akQQxavX6hp/LC6rqLGLcXeQYU7XA==", + "path": "mono.texttemplating/3.0.0", + "hashPath": "mono.texttemplating.3.0.0.nupkg.sha512" + }, + "Npgsql/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zu1nCRt0gWP/GR0reYgg0Bl5o8qyNV7mVAgzAbVLRiAd1CYXcf/9nrubPH0mt93u8iGTKmYqWaLVECEAcE6IfQ==", + "path": "npgsql/9.0.0", + "hashPath": "npgsql.9.0.0.nupkg.sha512" + }, + "Npgsql.EntityFrameworkCore.PostgreSQL/9.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ObngKFRLMBAeMqQzK7SC0Q6WZtWw0imPmEkVPo12yLVF3fioz2TN+w0mhNMJ5cVd/sLB2u+jei0bmA9sDMtkMw==", + "path": "npgsql.entityframeworkcore.postgresql/9.0.0", + "hashPath": "npgsql.entityframeworkcore.postgresql.9.0.0.nupkg.sha512" + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", + "path": "pipelines.sockets.unofficial/2.2.8", + "hashPath": "pipelines.sockets.unofficial.2.2.8.nupkg.sha512" + }, + "Serilog/4.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==", + "path": "serilog/4.0.0", + "hashPath": "serilog.4.0.0.nupkg.sha512" + }, + "Serilog.AspNetCore/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FAjtKPZ4IzqFQBqZKPv6evcXK/F0ls7RoXI/62Pnx2igkDZ6nZ/jn/C/FxVATqQbEQvtqP+KViWYIe4NZIHa2w==", + "path": "serilog.aspnetcore/8.0.0", + "hashPath": "serilog.aspnetcore.8.0.0.nupkg.sha512" + }, + "Serilog.Extensions.Hosting/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-db0OcbWeSCvYQkHWu6n0v40N4kKaTAXNjlM3BKvcbwvNzYphQFcBR+36eQ/7hMMwOkJvAyLC2a9/jNdUL5NjtQ==", + "path": "serilog.extensions.hosting/8.0.0", + "hashPath": "serilog.extensions.hosting.8.0.0.nupkg.sha512" + }, + "Serilog.Extensions.Logging/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YEAMWu1UnWgf1c1KP85l1SgXGfiVo0Rz6x08pCiPOIBt2Qe18tcZLvdBUuV5o1QHvrs8FAry9wTIhgBRtjIlEg==", + "path": "serilog.extensions.logging/8.0.0", + "hashPath": "serilog.extensions.logging.8.0.0.nupkg.sha512" + }, + "Serilog.Formatting.Compact/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ob6z3ikzFM3D1xalhFuBIK1IOWf+XrQq+H4KeH4VqBcPpNcmUgZlRQ2h3Q7wvthpdZBBoY86qZOI2LCXNaLlNA==", + "path": "serilog.formatting.compact/2.0.0", + "hashPath": "serilog.formatting.compact.2.0.0.nupkg.sha512" + }, + "Serilog.Settings.Configuration/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nR0iL5HwKj5v6ULo3/zpP8NMcq9E2pxYA6XKTSWCbugVs4YqPyvaqaKOY+OMpPivKp7zMEpax2UKHnDodbRB0Q==", + "path": "serilog.settings.configuration/8.0.0", + "hashPath": "serilog.settings.configuration.8.0.0.nupkg.sha512" + }, + "Serilog.Sinks.Console/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-fQGWqVMClCP2yEyTXPIinSr5c+CBGUvBybPxjAGcf7ctDhadFhrQw03Mv8rJ07/wR5PDfFjewf2LimvXCDzpbA==", + "path": "serilog.sinks.console/6.0.0", + "hashPath": "serilog.sinks.console.6.0.0.nupkg.sha512" + }, + "Serilog.Sinks.Debug/2.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Y6g3OBJ4JzTyyw16fDqtFcQ41qQAydnEvEqmXjhwhgjsnG/FaJ8GUqF5ldsC/bVkK8KYmqrPhDO+tm4dF6xx4A==", + "path": "serilog.sinks.debug/2.0.0", + "hashPath": "serilog.sinks.debug.2.0.0.nupkg.sha512" + }, + "Serilog.Sinks.File/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lxjg89Y8gJMmFxVkbZ+qDgjl+T4yC5F7WSLTvA+5q0R04tfKVLRL/EHpYoJ/MEQd2EeCKDuylBIVnAYMotmh2A==", + "path": "serilog.sinks.file/6.0.0", + "hashPath": "serilog.sinks.file.6.0.0.nupkg.sha512" + }, + "StackExchange.Redis/2.8.16": { + "type": "package", + "serviceable": true, + "sha512": "sha512-WaoulkOqOC9jHepca3JZKFTqndCWab5uYS7qCzmiQDlrTkFaDN7eLSlEfHycBxipRnQY9ppZM7QSsWAwUEGblw==", + "path": "stackexchange.redis/2.8.16", + "hashPath": "stackexchange.redis.2.8.16.nupkg.sha512" + }, + "System.CodeDom/6.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==", + "path": "system.codedom/6.0.0", + "hashPath": "system.codedom.6.0.0.nupkg.sha512" + }, + "System.Composition/7.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tRwgcAkDd85O8Aq6zHDANzQaq380cek9lbMg5Qma46u5BZXq/G+XvIYmu+UI+BIIZ9zssXLYrkTykEqxxvhcmg==", + "path": "system.composition/7.0.0", + "hashPath": "system.composition.7.0.0.nupkg.sha512" + }, + "System.Composition.AttributedModel/7.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2QzClqjElKxgI1jK1Jztnq44/8DmSuTSGGahXqQ4TdEV0h9s2KikQZIgcEqVzR7OuWDFPGLHIprBJGQEPr8fAQ==", + "path": "system.composition.attributedmodel/7.0.0", + "hashPath": "system.composition.attributedmodel.7.0.0.nupkg.sha512" + }, + "System.Composition.Convention/7.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-IMhTlpCs4HmlD8B+J8/kWfwX7vrBBOs6xyjSTzBlYSs7W4OET4tlkR/Sg9NG8jkdJH9Mymq0qGdYS1VPqRTBnQ==", + "path": "system.composition.convention/7.0.0", + "hashPath": "system.composition.convention.7.0.0.nupkg.sha512" + }, + "System.Composition.Hosting/7.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-eB6gwN9S+54jCTBJ5bpwMOVerKeUfGGTYCzz3QgDr1P55Gg/Wb27ShfPIhLMjmZ3MoAKu8uUSv6fcCdYJTN7Bg==", + "path": "system.composition.hosting/7.0.0", + "hashPath": "system.composition.hosting.7.0.0.nupkg.sha512" + }, + "System.Composition.Runtime/7.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-aZJ1Zr5Txe925rbo4742XifEyW0MIni1eiUebmcrP3HwLXZ3IbXUj4MFMUH/RmnJOAQiS401leg/2Sz1MkApDw==", + "path": "system.composition.runtime/7.0.0", + "hashPath": "system.composition.runtime.7.0.0.nupkg.sha512" + }, + "System.Composition.TypedParts/7.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZK0KNPfbtxVceTwh+oHNGUOYV2WNOHReX2AXipuvkURC7s/jPwoWfsu3SnDBDgofqbiWr96geofdQ2erm/KTHg==", + "path": "system.composition.typedparts/7.0.0", + "hashPath": "system.composition.typedparts.7.0.0.nupkg.sha512" + }, + "System.IdentityModel.Tokens.Jwt/8.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GJw3bYkWpOgvN3tJo5X4lYUeIFA2HD293FPUhKmp7qxS+g5ywAb34Dnd3cDAFLkcMohy5XTpoaZ4uAHuw0uSPQ==", + "path": "system.identitymodel.tokens.jwt/8.0.1", + "hashPath": "system.identitymodel.tokens.jwt.8.0.1.nupkg.sha512" + }, + "System.IO.Hashing/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ne1843evDugl0md7Fjzy6QjJrzsjh46ZKbhf8GwBXb5f/gw97J4bxMs0NQKifDuThh/f0bZ0e62NPl1jzTuRqA==", + "path": "system.io.hashing/8.0.0", + "hashPath": "system.io.hashing.8.0.0.nupkg.sha512" + }, + "Yarp.ReverseProxy/2.2.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-t16Z+OplJEElJy1Q6t12EwMGF2BeLw8IKjD1ema7ewbCRaMqeVIRPZo3MlxidnRFRK+tV6II8tKYX+7N5ZS98A==", + "path": "yarp.reverseproxy/2.2.0", + "hashPath": "yarp.reverseproxy.2.2.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/bin/Debug/net10.0/YarpGateway.dll b/bin/Debug/net10.0/YarpGateway.dll new file mode 100644 index 0000000..9ed99c6 Binary files /dev/null and b/bin/Debug/net10.0/YarpGateway.dll differ diff --git a/bin/Debug/net10.0/YarpGateway.pdb b/bin/Debug/net10.0/YarpGateway.pdb new file mode 100644 index 0000000..96f6229 Binary files /dev/null and b/bin/Debug/net10.0/YarpGateway.pdb differ diff --git a/bin/Debug/net10.0/YarpGateway.runtimeconfig.json b/bin/Debug/net10.0/YarpGateway.runtimeconfig.json new file mode 100644 index 0000000..bf15a00 --- /dev/null +++ b/bin/Debug/net10.0/YarpGateway.runtimeconfig.json @@ -0,0 +1,20 @@ +{ + "runtimeOptions": { + "tfm": "net10.0", + "frameworks": [ + { + "name": "Microsoft.NETCore.App", + "version": "10.0.0" + }, + { + "name": "Microsoft.AspNetCore.App", + "version": "10.0.0" + } + ], + "configProperties": { + "System.GC.Server": true, + "System.Reflection.NullabilityInfoContext.IsSupported": true, + "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false + } + } +} \ No newline at end of file diff --git a/bin/Debug/net10.0/YarpGateway.staticwebassets.endpoints.json b/bin/Debug/net10.0/YarpGateway.staticwebassets.endpoints.json new file mode 100644 index 0000000..5576e88 --- /dev/null +++ b/bin/Debug/net10.0/YarpGateway.staticwebassets.endpoints.json @@ -0,0 +1 @@ +{"Version":1,"ManifestType":"Build","Endpoints":[]} \ No newline at end of file diff --git a/bin/Debug/net10.0/appsettings.Development.json b/bin/Debug/net10.0/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/bin/Debug/net10.0/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/bin/Debug/net10.0/appsettings.json b/bin/Debug/net10.0/appsettings.json new file mode 100644 index 0000000..18088e8 --- /dev/null +++ b/bin/Debug/net10.0/appsettings.json @@ -0,0 +1,64 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning", + "Yarp.ReverseProxy": "Information" + } + }, + "AllowedHosts": "*", + "Cors": { + "AllowedOrigins": [ + "http://localhost:5173", + "http://127.0.0.1:5173", + "http://localhost:5174" + ], + "AllowAnyOrigin": false + }, + "ConnectionStrings": { + "DefaultConnection": "Host=192.168.100.10;Port=5432;Database=fengling_gateway;Username=movingsam;Password=sl52788542" + }, + "Jwt": { + "Authority": "https://your-auth-server.com", + "Audience": "fengling-gateway", + "ValidateIssuer": true, + "ValidateAudience": true + }, + "Redis": { + "ConnectionString": "192.168.100.10:6379", + "Database": 0, + "InstanceName": "YarpGateway" + }, + "ReverseProxy": { + "Routes": {}, + "Clusters": {} + }, + "Serilog": { + "Using": ["Serilog.Sinks.Console", "Serilog.Sinks.File"], + "MinimumLevel": "Information", + "WriteTo": [ + { + "Name": "Console", + "Args": { + "outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}" + } + }, + { + "Name": "File", + "Args": { + "path": "logs/gateway-.log", + "rollingInterval": "Day", + "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}" + } + } + ], + "Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"] + }, + "Kestrel": { + "Endpoints": { + "Http": { + "Url": "http://0.0.0.0:8080" + } + } + } +} diff --git a/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..4e90e20 Binary files /dev/null and b/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..8dcc1bd Binary files /dev/null and b/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..8ee4b4d Binary files /dev/null and b/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..62b0422 Binary files /dev/null and b/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..180a8d9 Binary files /dev/null and b/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..4b7bae7 Binary files /dev/null and b/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..05da79f Binary files /dev/null and b/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..bd0bb72 Binary files /dev/null and b/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..e128407 Binary files /dev/null and b/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..6a98feb Binary files /dev/null and b/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..8e8ced1 Binary files /dev/null and b/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..970399e Binary files /dev/null and b/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..9e6afdd Binary files /dev/null and b/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..6cb47ac Binary files /dev/null and b/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..76ddceb Binary files /dev/null and b/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..c41ed4c Binary files /dev/null and b/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..5fe6dd8 Binary files /dev/null and b/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..6eb37cb Binary files /dev/null and b/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..046c953 Binary files /dev/null and b/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..368bb7b Binary files /dev/null and b/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..72bb9d5 Binary files /dev/null and b/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..6051d99 Binary files /dev/null and b/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..ad0d2cd Binary files /dev/null and b/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..829ed5d Binary files /dev/null and b/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..9890df1 Binary files /dev/null and b/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..eaded8c Binary files /dev/null and b/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..47f3fd5 Binary files /dev/null and b/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..28c43a1 Binary files /dev/null and b/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..203cc83 Binary files /dev/null and b/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..208b1d9 Binary files /dev/null and b/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..895ca11 Binary files /dev/null and b/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..c712a37 Binary files /dev/null and b/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..4d5b1a3 Binary files /dev/null and b/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..4790c29 Binary files /dev/null and b/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..05bc700 Binary files /dev/null and b/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..eb61aff Binary files /dev/null and b/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..ea192cc Binary files /dev/null and b/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..08eaeab Binary files /dev/null and b/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..fce2d36 Binary files /dev/null and b/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..e142029 Binary files /dev/null and b/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..7c20209 Binary files /dev/null and b/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..be86033 Binary files /dev/null and b/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..4be51d2 Binary files /dev/null and b/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..768264c Binary files /dev/null and b/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..0dc6fae Binary files /dev/null and b/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..85dd902 Binary files /dev/null and b/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..dfd0a6b Binary files /dev/null and b/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..f5e6b57 Binary files /dev/null and b/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..cafdf21 Binary files /dev/null and b/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..ace0504 Binary files /dev/null and b/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..9867f6f Binary files /dev/null and b/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..2a4742e Binary files /dev/null and b/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..8977db0 Binary files /dev/null and b/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..8012969 Binary files /dev/null and b/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..9a06288 Binary files /dev/null and b/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..e4b3c7a Binary files /dev/null and b/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..b51ee57 Binary files /dev/null and b/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..d160925 Binary files /dev/null and b/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..e27e8be Binary files /dev/null and b/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..22b6e95 Binary files /dev/null and b/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll differ diff --git a/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100755 index 0000000..57e4d28 Binary files /dev/null and b/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll b/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll new file mode 100755 index 0000000..305dfbf Binary files /dev/null and b/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll b/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll new file mode 100755 index 0000000..28a5c18 Binary files /dev/null and b/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll differ diff --git a/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll b/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100755 index 0000000..cef3ebc Binary files /dev/null and b/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll b/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll new file mode 100755 index 0000000..dce3bc0 Binary files /dev/null and b/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll differ diff --git a/logs/gateway-20260201.log b/logs/gateway-20260201.log new file mode 100644 index 0000000..520548f --- /dev/null +++ b/logs/gateway-20260201.log @@ -0,0 +1,1867 @@ +2026-02-01 20:28:38.367 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 20:28:38.526 +08:00 [INF] Loading proxy data from config. +2026-02-01 20:28:38.538 +08:00 [INF] Starting YARP Gateway +2026-02-01 20:28:38.547 +08:00 [INF] Creating key {608f3e1e-2f33-4a15-9ede-21571a370d97} with creation date 2026-02-01 12:28:38Z, activation date 2026-02-01 12:28:38Z, and expiration date 2026-05-02 12:28:38Z. +2026-02-01 20:28:38.548 +08:00 [WRN] No XML encryptor configured. Key {608f3e1e-2f33-4a15-9ede-21571a370d97} may be persisted to storage in unencrypted form. +2026-02-01 20:28:38.549 +08:00 [INF] Writing data to file '/Users/movingsam/.aspnet/DataProtection-Keys/key-608f3e1e-2f33-4a15-9ede-21571a370d97.xml'. +2026-02-01 20:28:38.561 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 20:28:38.565 +08:00 [INF] Now listening on: http://0.0.0.0:8080 +2026-02-01 20:28:38.565 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2026-02-01 20:28:38.565 +08:00 [INF] Hosting environment: Development +2026-02-01 20:28:38.565 +08:00 [INF] Content root path: /Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway +2026-02-01 20:28:45.468 +08:00 [INF] Request starting HTTP/1.1 GET http://0.0.0.0:8080/ - null null +2026-02-01 20:28:45.491 +08:00 [INF] Executing endpoint 'catch-all-route' +2026-02-01 20:28:45.492 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 20:28:45.493 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 20:28:45.494 +08:00 [INF] Executed endpoint 'catch-all-route' +2026-02-01 20:28:45.498 +08:00 [INF] Request finished HTTP/1.1 GET http://0.0.0.0:8080/ - 503 0 null 30.4891ms +2026-02-01 20:28:49.620 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/ - null null +2026-02-01 20:28:49.622 +08:00 [INF] Executing endpoint 'catch-all-route' +2026-02-01 20:28:49.623 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 20:28:49.623 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 20:28:49.623 +08:00 [INF] Executed endpoint 'catch-all-route' +2026-02-01 20:28:49.624 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/ - 503 0 null 4.0712ms +2026-02-01 20:29:02.911 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/ - null null +2026-02-01 20:29:02.914 +08:00 [INF] Executing endpoint 'catch-all-route' +2026-02-01 20:29:02.914 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 20:29:02.915 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 20:29:02.915 +08:00 [INF] Executed endpoint 'catch-all-route' +2026-02-01 20:29:02.915 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/ - 503 0 null 3.9ms +2026-02-01 20:29:30.023 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:29:30.026 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:29:30.046 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:29:30.506 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 20:29:30.506 +08:00 [INF] Executed DbCommand (7ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:29:30.506 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 20:29:30.512 +08:00 [INF] Loaded 0 clusters from database +2026-02-01 20:29:30.512 +08:00 [INF] Loaded 0 routes from database +2026-02-01 20:29:30.518 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:29:30.527 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 480.0852ms +2026-02-01 20:29:30.527 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:29:30.528 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 505.1274ms +2026-02-01 20:29:30.748 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/favicon.ico - null null +2026-02-01 20:29:30.748 +08:00 [INF] Executing endpoint 'catch-all-route' +2026-02-01 20:29:30.749 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 20:29:30.749 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 20:29:30.749 +08:00 [INF] Executed endpoint 'catch-all-route' +2026-02-01 20:29:30.749 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/favicon.ico - 503 0 null 1.0967ms +2026-02-01 20:29:42.256 +08:00 [INF] Application is shutting down... +2026-02-01 20:49:15.886 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 20:49:16.066 +08:00 [INF] Loading proxy data from config. +2026-02-01 20:49:16.080 +08:00 [INF] Starting YARP Gateway +2026-02-01 20:49:16.102 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 20:49:16.105 +08:00 [INF] Now listening on: http://0.0.0.0:8080 +2026-02-01 20:49:16.106 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2026-02-01 20:49:16.106 +08:00 [INF] Hosting environment: Development +2026-02-01 20:49:16.106 +08:00 [INF] Content root path: /Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway +2026-02-01 20:49:41.074 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:49:41.087 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:49:41.105 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:49:41.639 +08:00 [INF] Executed DbCommand (11ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:49:41.639 +08:00 [INF] Executed DbCommand (11ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 20:49:41.645 +08:00 [INF] Loaded 0 clusters from database +2026-02-01 20:49:41.649 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:49:41.661 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 555.0812ms +2026-02-01 20:49:41.663 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:49:41.664 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 591.0773ms +2026-02-01 20:49:41.679 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 20:49:41.680 +08:00 [INF] Loaded 0 routes from database +2026-02-01 20:49:49.313 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:49:49.316 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:49:49.317 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:49:49.329 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:49:49.330 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:49:49.330 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 12.3257ms +2026-02-01 20:49:49.330 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:49:49.331 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 17.6625ms +2026-02-01 20:49:59.040 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:49:59.041 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:49:59.041 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:49:59.048 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:49:59.049 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:49:59.050 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 8.1249ms +2026-02-01 20:49:59.050 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:49:59.050 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 10.4396ms +2026-02-01 20:50:08.685 +08:00 [INF] Request starting HTTP/1.1 OPTIONS http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:50:08.685 +08:00 [INF] Executing endpoint 'catch-all-route' +2026-02-01 20:50:08.689 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 20:50:08.695 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 20:50:08.695 +08:00 [INF] Executed endpoint 'catch-all-route' +2026-02-01 20:50:08.696 +08:00 [INF] Request finished HTTP/1.1 OPTIONS http://localhost:8080/api/gateway/tenants - 503 0 null 11.3412ms +2026-02-01 20:51:44.258 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:51:44.263 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:51:44.264 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:51:44.280 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:51:44.281 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:51:44.281 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 17.172ms +2026-02-01 20:51:44.282 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:51:44.282 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 24.3958ms +2026-02-01 20:52:31.061 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:52:31.063 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:52:31.063 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:52:31.070 +08:00 [INF] Executed DbCommand (6ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:52:31.071 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:52:31.072 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 8.8603ms +2026-02-01 20:52:31.073 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:52:31.076 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 11.8326ms +2026-02-01 20:53:25.683 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:53:25.686 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:53:25.686 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:53:25.706 +08:00 [INF] Executed DbCommand (12ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:53:25.707 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:53:25.710 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 23.3473ms +2026-02-01 20:53:25.752 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:53:25.756 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 69.8792ms +2026-02-01 20:55:24.569 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:55:24.621 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:55:24.631 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:55:24.676 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:55:24.676 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:55:24.677 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 45.3671ms +2026-02-01 20:55:24.678 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:55:24.678 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 110.0931ms +2026-02-01 20:55:36.183 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:55:36.184 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:55:36.184 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:55:36.196 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:55:36.197 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:55:36.197 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 13.3423ms +2026-02-01 20:55:36.198 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:55:36.198 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 15.0201ms +2026-02-01 20:55:47.693 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:55:47.693 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:55:47.694 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:55:47.701 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:55:47.703 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:55:47.706 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 11.9807ms +2026-02-01 20:55:47.706 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:55:47.707 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 14.045ms +2026-02-01 20:56:32.634 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:56:32.635 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:56:32.635 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:56:32.642 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:56:32.643 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:56:32.643 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 7.646ms +2026-02-01 20:56:32.643 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:56:32.644 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 9.6731ms +2026-02-01 20:56:35.189 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:56:35.189 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:56:35.190 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:56:35.194 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:56:35.195 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:56:35.196 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.898ms +2026-02-01 20:56:35.196 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:56:35.196 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 6.9241ms +2026-02-01 20:56:58.530 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 20:56:58.533 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:56:58.534 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 20:56:58.555 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 20:56:58.558 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 20:56:58.558 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 23.7127ms +2026-02-01 20:56:58.558 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 20:56:58.558 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 28.0375ms +2026-02-01 21:00:23.871 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:00:23.872 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:00:23.872 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:00:23.887 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:00:23.888 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:00:23.889 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 16.3404ms +2026-02-01 21:00:23.893 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:00:23.894 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 24.0711ms +2026-02-01 21:02:01.116 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:02:01.118 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:01.120 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:02:01.162 +08:00 [INF] Executed DbCommand (6ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:02:01.163 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:02:01.163 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 43.0102ms +2026-02-01 21:02:01.163 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:01.163 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 48.3748ms +2026-02-01 21:02:02.971 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:02:02.972 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:02.972 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:02:02.979 +08:00 [INF] Executed DbCommand (6ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:02:02.980 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:02:02.980 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 8.03ms +2026-02-01 21:02:02.980 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:02.981 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 9.244ms +2026-02-01 21:02:06.331 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:02:06.331 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:06.332 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:02:06.338 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:02:06.339 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:02:06.340 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 7.8184ms +2026-02-01 21:02:06.340 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:06.340 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 9.4572ms +2026-02-01 21:02:11.767 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:02:11.767 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:11.768 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:02:11.774 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:02:11.775 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:02:11.775 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 7.011ms +2026-02-01 21:02:11.775 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:11.775 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 7.786ms +2026-02-01 21:02:13.215 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:02:13.216 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:13.216 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:02:13.221 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:02:13.222 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:02:13.222 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.6281ms +2026-02-01 21:02:13.222 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:13.222 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 6.8845ms +2026-02-01 21:02:14.142 +08:00 [INF] Request starting HTTP/1.1 POST http://localhost:8080/api/gateway/reload - null 0 +2026-02-01 21:02:14.143 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.ReloadConfig (YarpGateway)' +2026-02-01 21:02:14.154 +08:00 [INF] Route matched with {action = "ReloadConfig", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] ReloadConfig() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:02:14.166 +08:00 [INF] Executed DbCommand (9ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 21:02:14.167 +08:00 [INF] Loaded 0 routes from database +2026-02-01 21:02:14.174 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 21:02:14.174 +08:00 [INF] Loaded 0 clusters from database +2026-02-01 21:02:14.175 +08:00 [INF] Executing OkObjectResult, writing value of type '<>f__AnonymousType0`1[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. +2026-02-01 21:02:14.181 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.ReloadConfig (YarpGateway) in 27.4397ms +2026-02-01 21:02:14.181 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.ReloadConfig (YarpGateway)' +2026-02-01 21:02:14.182 +08:00 [INF] Request finished HTTP/1.1 POST http://localhost:8080/api/gateway/reload - 200 null application/json; charset=utf-8 39.1772ms +2026-02-01 21:02:20.366 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:02:20.366 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:20.366 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:02:20.371 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:02:20.372 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:02:20.374 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 7.9321ms +2026-02-01 21:02:20.375 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:02:20.375 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 9.3938ms +2026-02-01 21:03:51.216 +08:00 [INF] Application is shutting down... +2026-02-01 21:03:55.492 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 21:03:55.661 +08:00 [INF] Loading proxy data from config. +2026-02-01 21:03:55.672 +08:00 [INF] Starting YARP Gateway +2026-02-01 21:03:55.718 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 21:03:55.724 +08:00 [INF] Now listening on: http://0.0.0.0:8080 +2026-02-01 21:03:55.724 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2026-02-01 21:03:55.724 +08:00 [INF] Hosting environment: Development +2026-02-01 21:03:55.724 +08:00 [INF] Content root path: /Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway +2026-02-01 21:04:01.694 +08:00 [INF] Loading proxy data from config. +2026-02-01 21:04:42.773 +08:00 [INF] Application is shutting down... +2026-02-01 21:04:47.139 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 21:04:47.330 +08:00 [INF] Loading proxy data from config. +2026-02-01 21:04:47.346 +08:00 [INF] Starting YARP Gateway +2026-02-01 21:04:47.369 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 21:04:47.374 +08:00 [INF] Now listening on: http://0.0.0.0:8080 +2026-02-01 21:04:47.374 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2026-02-01 21:04:47.375 +08:00 [INF] Hosting environment: Development +2026-02-01 21:04:47.375 +08:00 [INF] Content root path: /Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway +2026-02-01 21:04:58.300 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:04:58.380 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:04:58.392 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:04:58.408 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:04:59.210 +08:00 [INF] Executed DbCommand (11ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 21:04:59.210 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 21:04:59.216 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:04:59.218 +08:00 [INF] Loaded 0 routes from database +2026-02-01 21:04:59.218 +08:00 [INF] Loaded 0 clusters from database +2026-02-01 21:04:59.221 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:04:59.239 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:04:59.240 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 829.6275ms +2026-02-01 21:04:59.240 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:04:59.241 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:04:59.241 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:04:59.242 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:04:59.243 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 947.8535ms +2026-02-01 21:04:59.247 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:04:59.247 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:04:59.248 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.222ms +2026-02-01 21:04:59.248 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:04:59.248 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 8.802ms +2026-02-01 21:04:59.331 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:04:59.332 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:04:59.333 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:04:59.333 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:04:59.339 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:04:59.342 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:04:59.342 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 8.9976ms +2026-02-01 21:04:59.343 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:04:59.343 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 12.6168ms +2026-02-01 21:05:08.512 +08:00 [INF] Request starting HTTP/1.1 OPTIONS http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:05:08.512 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:05:08.513 +08:00 [INF] Request finished HTTP/1.1 OPTIONS http://localhost:8080/api/gateway/tenants - 204 null null 1.3091ms +2026-02-01 21:05:08.515 +08:00 [INF] Request starting HTTP/1.1 POST http://localhost:8080/api/gateway/tenants - application/json 47 +2026-02-01 21:05:08.516 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:05:08.516 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.CreateTenant (YarpGateway)' +2026-02-01 21:05:08.529 +08:00 [INF] Route matched with {action = "CreateTenant", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] CreateTenant(CreateTenantDto) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:05:08.574 +08:00 [INF] Executed DbCommand (19ms) [Parameters=[@__dto_TenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE t."TenantCode" = @__dto_TenantCode_0 +LIMIT 1 +2026-02-01 21:05:08.640 +08:00 [INF] Executed DbCommand (11ms) [Parameters=[@p0='?' (DbType = Int64), @p1='?' (DbType = Int64), @p2='?' (DbType = DateTime), @p3='?' (DbType = Boolean), @p4='?' (DbType = Int32), @p5='?', @p6='?', @p7='?' (DbType = Int64), @p8='?' (DbType = DateTime), @p9='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +INSERT INTO "Tenants" ("Id", "CreatedBy", "CreatedTime", "IsDeleted", "Status", "TenantCode", "TenantName", "UpdatedBy", "UpdatedTime", "Version") +VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9); +2026-02-01 21:05:08.643 +08:00 [INF] Executing OkObjectResult, writing value of type 'YarpGateway.Models.GwTenant'. +2026-02-01 21:05:08.644 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.CreateTenant (YarpGateway) in 114.6718ms +2026-02-01 21:05:08.644 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.CreateTenant (YarpGateway)' +2026-02-01 21:05:08.644 +08:00 [INF] Request finished HTTP/1.1 POST http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 129.8694ms +2026-02-01 21:05:10.106 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:05:10.107 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:05:10.107 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:05:10.122 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:05:10.143 +08:00 [INF] Executed DbCommand (6ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 21:05:10.143 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:05:10.145 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 23.0227ms +2026-02-01 21:05:10.146 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:05:10.146 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 40.263ms +2026-02-01 21:05:53.153 +08:00 [INF] Request starting HTTP/1.1 OPTIONS http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:05:53.154 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:05:53.154 +08:00 [INF] Request finished HTTP/1.1 OPTIONS http://localhost:8080/api/gateway/tenants/1668/routes - 204 null null 0.8999ms +2026-02-01 21:05:53.156 +08:00 [INF] Request starting HTTP/1.1 POST http://localhost:8080/api/gateway/tenants/1668/routes - application/json 64 +2026-02-01 21:05:53.156 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:05:53.156 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.CreateRoute (YarpGateway)' +2026-02-01 21:05:53.164 +08:00 [INF] Route matched with {action = "CreateRoute", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] CreateRoute(System.String, CreateRouteDto) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:05:53.191 +08:00 [INF] Executed DbCommand (8ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE t."TenantCode" = @__tenantCode_0 +LIMIT 1 +2026-02-01 21:05:53.204 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."ClusterId" = @__clusterId_0 +LIMIT 1 +2026-02-01 21:05:53.244 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[@p0='?' (DbType = Int64), @p1='?', @p2='?' (DbType = Int64), @p3='?' (DbType = DateTime), @p4='?' (DbType = Boolean), @p5='?', @p6='?' (DbType = Int32), @p7='?', @p8='?' (DbType = Int32), @p9='?', @p10='?' (DbType = Int64), @p11='?' (DbType = DateTime), @p12='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +INSERT INTO "TenantRoutes" ("Id", "ClusterId", "CreatedBy", "CreatedTime", "IsDeleted", "PathPattern", "Priority", "ServiceName", "Status", "TenantCode", "UpdatedBy", "UpdatedTime", "Version") +VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12); +2026-02-01 21:05:53.251 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 21:05:53.252 +08:00 [INF] Loaded 1 routes from database +2026-02-01 21:05:53.252 +08:00 [INF] Executing OkObjectResult, writing value of type 'YarpGateway.Models.GwTenantRoute'. +2026-02-01 21:05:53.253 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.CreateRoute (YarpGateway) in 89.3866ms +2026-02-01 21:05:53.253 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.CreateRoute (YarpGateway)' +2026-02-01 21:05:53.253 +08:00 [INF] Request finished HTTP/1.1 POST http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 97.9256ms +2026-02-01 21:05:53.258 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:05:53.259 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:05:53.259 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:05:53.259 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:05:53.265 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 21:05:53.266 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:05:53.267 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 7.4562ms +2026-02-01 21:05:53.267 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:05:53.267 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 8.7162ms +2026-02-01 21:05:56.402 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 21:05:56.402 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:05:56.403 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:05:56.435 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:05:56.448 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 21:05:56.450 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:05:56.451 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 15.5198ms +2026-02-01 21:05:56.451 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:05:56.451 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 49.2768ms +2026-02-01 21:06:14.850 +08:00 [INF] Request starting HTTP/1.1 OPTIONS http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 21:06:14.851 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:14.851 +08:00 [INF] Request finished HTTP/1.1 OPTIONS http://localhost:8080/api/gateway/clusters/1668-backend/instances - 204 null null 1.24ms +2026-02-01 21:06:14.853 +08:00 [INF] Request starting HTTP/1.1 POST http://localhost:8080/api/gateway/clusters/1668-backend/instances - application/json 73 +2026-02-01 21:06:14.853 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:14.853 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.AddInstance (YarpGateway)' +2026-02-01 21:06:14.860 +08:00 [INF] Route matched with {action = "AddInstance", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] AddInstance(System.String, CreateInstanceDto) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:14.876 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[@__clusterId_0='?', @__dto_DestinationId_1='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND s."DestinationId" = @__dto_DestinationId_1 +LIMIT 1 +2026-02-01 21:06:14.902 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[@p0='?' (DbType = Int64), @p1='?', @p2='?', @p3='?' (DbType = Int64), @p4='?' (DbType = DateTime), @p5='?', @p6='?' (DbType = Int32), @p7='?' (DbType = Boolean), @p8='?' (DbType = Int32), @p9='?' (DbType = Int64), @p10='?' (DbType = DateTime), @p11='?' (DbType = Int32), @p12='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +INSERT INTO "ServiceInstances" ("Id", "Address", "ClusterId", "CreatedBy", "CreatedTime", "DestinationId", "Health", "IsDeleted", "Status", "UpdatedBy", "UpdatedTime", "Version", "Weight") +VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12); +2026-02-01 21:06:14.908 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 21:06:14.909 +08:00 [INF] Loaded 1 clusters from database +2026-02-01 21:06:14.909 +08:00 [INF] Executing OkObjectResult, writing value of type 'YarpGateway.Models.GwServiceInstance'. +2026-02-01 21:06:14.910 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.AddInstance (YarpGateway) in 50.4462ms +2026-02-01 21:06:14.910 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.AddInstance (YarpGateway)' +2026-02-01 21:06:14.910 +08:00 [INF] Request finished HTTP/1.1 POST http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 57.6265ms +2026-02-01 21:06:14.914 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 21:06:14.914 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:14.914 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:06:14.915 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:14.918 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 21:06:14.919 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:14.919 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 4.0322ms +2026-02-01 21:06:14.919 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:06:14.919 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 4.7505ms +2026-02-01 21:06:17.150 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:06:17.150 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:17.151 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:06:17.151 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:17.156 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:06:17.161 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:17.162 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 10.6559ms +2026-02-01 21:06:17.162 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:06:17.163 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 12.4738ms +2026-02-01 21:06:19.111 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:06:19.111 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:19.111 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:06:19.111 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:19.117 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 21:06:19.120 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:19.120 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 8.9071ms +2026-02-01 21:06:19.121 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:06:19.121 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 9.9959ms +2026-02-01 21:06:20.175 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 21:06:20.175 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:20.175 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:06:20.175 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:20.189 +08:00 [INF] Executed DbCommand (11ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 21:06:20.189 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:20.190 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 14.274ms +2026-02-01 21:06:20.190 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:06:20.190 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 15.5078ms +2026-02-01 21:06:23.521 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:06:23.522 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:23.522 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:06:23.522 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:23.527 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:06:23.529 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:23.530 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 7.7563ms +2026-02-01 21:06:23.530 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:06:23.531 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 9.1482ms +2026-02-01 21:06:24.313 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:06:24.313 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:24.314 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:06:24.314 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:24.327 +08:00 [INF] Executed DbCommand (13ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:06:24.328 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:24.329 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 14.6627ms +2026-02-01 21:06:24.329 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:06:24.329 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 15.7096ms +2026-02-01 21:06:24.338 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:06:24.339 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:24.344 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:06:24.345 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:24.351 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 21:06:24.352 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:24.352 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 7.2453ms +2026-02-01 21:06:24.352 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:06:24.352 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 14.2265ms +2026-02-01 21:06:24.355 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 21:06:24.355 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:24.355 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:06:24.355 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:24.360 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 21:06:24.361 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:24.361 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 5.8417ms +2026-02-01 21:06:24.362 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:06:24.363 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 8.1657ms +2026-02-01 21:06:27.399 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:06:27.399 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:27.400 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:06:27.400 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:27.404 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:06:27.405 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:27.406 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.7784ms +2026-02-01 21:06:27.406 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:06:27.406 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 7.1823ms +2026-02-01 21:06:28.983 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:06:28.983 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:28.983 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:06:28.983 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:28.989 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:06:28.990 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:28.991 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 7.4782ms +2026-02-01 21:06:28.991 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:06:28.991 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 8.8219ms +2026-02-01 21:06:29.001 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:06:29.002 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:29.002 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:06:29.002 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:29.008 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 21:06:29.009 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:29.009 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 6.6596ms +2026-02-01 21:06:29.009 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:06:29.009 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 7.7495ms +2026-02-01 21:06:29.011 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 21:06:29.011 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:29.011 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:06:29.012 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:29.016 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 21:06:29.016 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:29.017 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 4.9486ms +2026-02-01 21:06:29.017 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:06:29.017 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 5.6986ms +2026-02-01 21:06:36.589 +08:00 [INF] Request starting HTTP/1.1 POST http://localhost:8080/api/gateway/reload - null 0 +2026-02-01 21:06:36.590 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:36.590 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.ReloadConfig (YarpGateway)' +2026-02-01 21:06:36.606 +08:00 [INF] Route matched with {action = "ReloadConfig", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] ReloadConfig() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:36.640 +08:00 [INF] Executed DbCommand (26ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 21:06:36.641 +08:00 [INF] Loaded 1 routes from database +2026-02-01 21:06:36.660 +08:00 [INF] Executed DbCommand (17ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 21:06:36.661 +08:00 [INF] Loaded 1 clusters from database +2026-02-01 21:06:36.661 +08:00 [INF] Executing OkObjectResult, writing value of type '<>f__AnonymousType0`1[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. +2026-02-01 21:06:36.668 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.ReloadConfig (YarpGateway) in 61.9397ms +2026-02-01 21:06:36.668 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.ReloadConfig (YarpGateway)' +2026-02-01 21:06:36.669 +08:00 [INF] Request finished HTTP/1.1 POST http://localhost:8080/api/gateway/reload - 200 null application/json; charset=utf-8 79.8832ms +2026-02-01 21:06:36.674 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:06:36.674 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:36.675 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:06:36.675 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:36.686 +08:00 [INF] Executed DbCommand (8ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 21:06:36.688 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:36.688 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 13.2311ms +2026-02-01 21:06:36.688 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:06:36.688 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 14.6415ms +2026-02-01 21:06:36.693 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 21:06:36.693 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:06:36.693 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:06:36.694 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:06:36.699 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 21:06:36.700 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:06:36.701 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 6.8118ms +2026-02-01 21:06:36.701 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:06:36.701 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 7.9798ms +2026-02-01 21:13:26.437 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:13:26.440 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:13:26.440 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:13:26.441 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:13:26.478 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:13:26.479 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:13:26.479 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 38.2422ms +2026-02-01 21:13:26.479 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:13:26.479 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 42.6309ms +2026-02-01 21:13:28.393 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:13:28.394 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:13:28.394 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:13:28.394 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:13:28.405 +08:00 [INF] Executed DbCommand (7ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 21:13:28.406 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:13:28.406 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 11.854ms +2026-02-01 21:13:28.407 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:13:28.407 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 13.359ms +2026-02-01 21:13:31.010 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:13:31.010 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:13:31.011 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:13:31.011 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:13:31.015 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:13:31.016 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:13:31.016 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.5402ms +2026-02-01 21:13:31.016 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:13:31.017 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 6.5055ms +2026-02-01 21:13:33.878 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:13:33.878 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:13:33.879 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:13:33.879 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:13:33.884 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 21:13:33.885 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:13:33.885 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 5.7937ms +2026-02-01 21:13:33.885 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:13:33.886 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 7.3867ms +2026-02-01 21:13:34.998 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 21:13:34.998 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:13:34.998 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:13:34.999 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:13:35.003 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 21:13:35.004 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:13:35.004 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 5.6441ms +2026-02-01 21:13:35.005 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:13:35.005 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 6.7441ms +2026-02-01 21:13:40.963 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:13:40.964 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:13:40.964 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:13:40.964 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:13:40.970 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 21:13:40.971 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:13:40.971 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 6.8734ms +2026-02-01 21:13:40.971 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:13:40.972 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 8.4311ms +2026-02-01 21:13:41.818 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:13:41.818 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:13:41.819 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:13:41.819 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:13:41.824 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:13:41.825 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:13:41.825 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 6.3963ms +2026-02-01 21:13:41.826 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:13:41.826 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 8.1552ms +2026-02-01 21:14:14.883 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:14:14.884 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:14:14.884 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:14:14.884 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:14:14.891 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:14:14.892 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:14:14.893 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 8.6189ms +2026-02-01 21:14:14.893 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:14:14.894 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 10.1815ms +2026-02-01 21:14:14.901 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 21:14:14.902 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:14:14.902 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:14:14.903 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:14:14.908 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 21:14:14.909 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:14:14.909 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 6.047ms +2026-02-01 21:14:14.909 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 21:14:14.909 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 7.7971ms +2026-02-01 21:14:14.911 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 21:14:14.911 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:14:14.911 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:14:14.911 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:14:14.916 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 21:14:14.917 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:14:14.917 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 5.5654ms +2026-02-01 21:14:14.917 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 21:14:14.917 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 6.8468ms +2026-02-01 21:14:15.476 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 21:14:15.477 +08:00 [INF] CORS policy execution successful. +2026-02-01 21:14:15.477 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:14:15.477 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 21:14:15.482 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 21:14:15.483 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 21:14:15.483 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 6.0338ms +2026-02-01 21:14:15.483 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 21:14:15.484 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 7.183ms +2026-02-01 21:24:38.446 +08:00 [INF] Application is shutting down... +2026-02-01 22:03:24.445 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 22:03:24.605 +08:00 [INF] Loading proxy data from config. +2026-02-01 22:03:48.070 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 22:03:48.232 +08:00 [INF] Loading proxy data from config. +2026-02-01 22:04:34.173 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 22:04:34.333 +08:00 [INF] Loading proxy data from config. +2026-02-01 22:04:34.365 +08:00 [INF] Initializing route cache from database... +2026-02-01 22:04:34.801 +08:00 [ERR] Failed executing DbCommand (10ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:04:34.809 +08:00 [ERR] An exception occurred while iterating over the results of a query for context type 'YarpGateway.Data.GatewayDbContext'. +Npgsql.PostgresException (0x80004005): 42703: column t.IsGlobal does not exist + +POSITION: 78 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) + at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync() + Exception data: + Severity: ERROR + SqlState: 42703 + MessageText: column t.IsGlobal does not exist + Position: 78 + File: parse_relation.c + Line: 3822 + Routine: errorMissingColumn +Npgsql.PostgresException (0x80004005): 42703: column t.IsGlobal does not exist + +POSITION: 78 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) + at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync() + Exception data: + Severity: ERROR + SqlState: 42703 + MessageText: column t.IsGlobal does not exist + Position: 78 + File: parse_relation.c + Line: 3822 + Routine: errorMissingColumn +2026-02-01 22:06:29.393 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 22:06:29.561 +08:00 [INF] Loading proxy data from config. +2026-02-01 22:06:29.594 +08:00 [INF] Initializing route cache from database... +2026-02-01 22:06:30.039 +08:00 [ERR] Failed executing DbCommand (11ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:06:30.047 +08:00 [ERR] An exception occurred while iterating over the results of a query for context type 'YarpGateway.Data.GatewayDbContext'. +Npgsql.PostgresException (0x80004005): 42703: column t.IsGlobal does not exist + +POSITION: 78 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) + at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync() + Exception data: + Severity: ERROR + SqlState: 42703 + MessageText: column t.IsGlobal does not exist + Position: 78 + File: parse_relation.c + Line: 3822 + Routine: errorMissingColumn +Npgsql.PostgresException (0x80004005): 42703: column t.IsGlobal does not exist + +POSITION: 78 + at Npgsql.Internal.NpgsqlConnector.ReadMessageLong(Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage) + at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteReader(Boolean async, CommandBehavior behavior, CancellationToken cancellationToken) + at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(AsyncEnumerator enumerator, CancellationToken cancellationToken) + at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken) + at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync() + Exception data: + Severity: ERROR + SqlState: 42703 + MessageText: column t.IsGlobal does not exist + Position: 78 + File: parse_relation.c + Line: 3822 + Routine: errorMissingColumn +2026-02-01 22:06:49.708 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 22:06:49.873 +08:00 [INF] Loading proxy data from config. +2026-02-01 22:06:49.897 +08:00 [INF] Initializing route cache from database... +2026-02-01 22:06:50.321 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:06:50.359 +08:00 [INF] Route cache initialized: 0 global routes, 1 tenant routes +2026-02-01 22:06:50.359 +08:00 [INF] Starting YARP Gateway +2026-02-01 22:06:50.376 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 22:06:50.377 +08:00 [INF] Now listening on: http://0.0.0.0:8080 +2026-02-01 22:06:50.377 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2026-02-01 22:06:50.377 +08:00 [INF] Hosting environment: Development +2026-02-01 22:06:50.377 +08:00 [INF] Content root path: /Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway +2026-02-01 22:06:58.544 +08:00 [INF] Application is shutting down... +2026-02-01 22:07:12.683 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 22:07:12.845 +08:00 [INF] Loading proxy data from config. +2026-02-01 22:07:12.873 +08:00 [INF] Initializing route cache from database... +2026-02-01 22:07:13.307 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:07:13.344 +08:00 [INF] Route cache initialized: 0 global routes, 1 tenant routes +2026-02-01 22:07:13.344 +08:00 [INF] Starting YARP Gateway +2026-02-01 22:07:13.360 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 22:07:13.361 +08:00 [INF] Now listening on: http://0.0.0.0:8080 +2026-02-01 22:07:13.361 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2026-02-01 22:07:13.361 +08:00 [INF] Hosting environment: Development +2026-02-01 22:07:13.362 +08:00 [INF] Content root path: /Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway +2026-02-01 22:07:19.889 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/ - null null +2026-02-01 22:07:19.900 +08:00 [INF] Executing endpoint 'catch-all-route' +2026-02-01 22:07:19.901 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 22:07:19.901 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 22:07:19.902 +08:00 [INF] Executed endpoint 'catch-all-route' +2026-02-01 22:07:19.902 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/ - 503 0 null 14.2547ms +2026-02-01 22:07:23.258 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes - null null +2026-02-01 22:07:23.259 +08:00 [INF] Executing endpoint 'catch-all-route' +2026-02-01 22:07:23.259 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 22:07:23.259 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 22:07:23.259 +08:00 [INF] Executed endpoint 'catch-all-route' +2026-02-01 22:07:23.259 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes - 503 0 null 1.7208ms +2026-02-01 22:07:32.615 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes - null null +2026-02-01 22:07:32.617 +08:00 [INF] Executing endpoint 'catch-all-route' +2026-02-01 22:07:32.617 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 22:07:32.617 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 22:07:32.617 +08:00 [INF] Executed endpoint 'catch-all-route' +2026-02-01 22:07:32.617 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes - 503 0 null 1.5037ms +2026-02-01 22:07:34.387 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes - null null +2026-02-01 22:07:34.387 +08:00 [INF] Executing endpoint 'catch-all-route' +2026-02-01 22:07:34.387 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 22:07:34.387 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 22:07:34.387 +08:00 [INF] Executed endpoint 'catch-all-route' +2026-02-01 22:07:34.387 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes - 503 0 null 0.4997ms +2026-02-01 22:11:38.559 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/tenants - null null +2026-02-01 22:11:38.560 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:11:38.567 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:11:38.589 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:11:38.589 +08:00 [INF] Loaded 1 routes from database +2026-02-01 22:11:38.605 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 22:11:38.612 +08:00 [INF] Loaded 1 clusters from database +2026-02-01 22:11:38.632 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:11:38.640 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:11:38.651 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 82.7537ms +2026-02-01 22:11:38.651 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:11:38.651 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 91.9911ms +2026-02-01 22:11:43.971 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes/global - null null +2026-02-01 22:11:43.971 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:11:43.974 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:11:43.980 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:11:43.980 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:11:43.982 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 8.1183ms +2026-02-01 22:11:43.982 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:11:43.982 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 11.0256ms +2026-02-01 22:11:46.387 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes - null null +2026-02-01 22:11:46.387 +08:00 [INF] Executing endpoint 'catch-all-route' +2026-02-01 22:11:46.387 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 22:11:46.387 +08:00 [WRN] No available destinations after load balancing for cluster 'dynamic-cluster'. +2026-02-01 22:11:46.387 +08:00 [INF] Executed endpoint 'catch-all-route' +2026-02-01 22:11:46.387 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes - 503 0 null 0.282ms +2026-02-01 22:12:03.947 +08:00 [INF] Loading proxy data from config. +2026-02-01 22:12:36.795 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes - null null +2026-02-01 22:12:36.795 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes - 404 0 null 0.4624ms +2026-02-01 22:12:36.795 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET http://127.0.0.1:8080/api/gateway/routes, Response status code: 404 +2026-02-01 22:12:38.943 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes - null null +2026-02-01 22:12:38.943 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes - 404 0 null 0.5529ms +2026-02-01 22:12:38.943 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET http://127.0.0.1:8080/api/gateway/routes, Response status code: 404 +2026-02-01 22:12:48.629 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes/global - null null +2026-02-01 22:12:48.630 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:12:48.630 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:12:48.634 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:12:48.635 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:12:48.635 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 4.8835ms +2026-02-01 22:12:48.635 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:12:48.635 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 5.3341ms +2026-02-01 22:13:08.032 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8080/api/gateway/routes/global - application/json 93 +2026-02-01 22:13:08.032 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.CreateGlobalRoute (YarpGateway)' +2026-02-01 22:13:08.036 +08:00 [INF] Route matched with {action = "CreateGlobalRoute", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] CreateGlobalRoute(CreateGlobalRouteDto) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:13:08.055 +08:00 [INF] Executed DbCommand (7ms) [Parameters=[@__dto_ServiceName_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."ServiceName" = @__dto_ServiceName_0 AND t."IsGlobal" +LIMIT 1 +2026-02-01 22:13:08.094 +08:00 [INF] Executed DbCommand (9ms) [Parameters=[@p0='?' (DbType = Int64), @p1='?', @p2='?' (DbType = Int64), @p3='?' (DbType = DateTime), @p4='?' (DbType = Boolean), @p5='?' (DbType = Boolean), @p6='?', @p7='?' (DbType = Int32), @p8='?', @p9='?' (DbType = Int32), @p10='?', @p11='?' (DbType = Int64), @p12='?' (DbType = DateTime), @p13='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +INSERT INTO "TenantRoutes" ("Id", "ClusterId", "CreatedBy", "CreatedTime", "IsDeleted", "IsGlobal", "PathPattern", "Priority", "ServiceName", "Status", "TenantCode", "UpdatedBy", "UpdatedTime", "Version") +VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13); +2026-02-01 22:13:08.097 +08:00 [INF] Reloading route cache... +2026-02-01 22:13:08.101 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:13:08.102 +08:00 [INF] Route cache reloaded +2026-02-01 22:13:08.102 +08:00 [INF] Executing OkObjectResult, writing value of type 'YarpGateway.Models.GwTenantRoute'. +2026-02-01 22:13:08.102 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.CreateGlobalRoute (YarpGateway) in 66.3013ms +2026-02-01 22:13:08.102 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.CreateGlobalRoute (YarpGateway)' +2026-02-01 22:13:08.102 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 70.5429ms +2026-02-01 22:13:10.304 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes/global - null null +2026-02-01 22:13:10.304 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:13:10.304 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:13:10.308 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:13:10.308 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:13:10.309 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 4.2081ms +2026-02-01 22:13:10.309 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:13:10.309 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 4.4907ms +2026-02-01 22:13:51.464 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8080/api/gateway/clusters/product-cluster/instances - application/json 79 +2026-02-01 22:13:51.465 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.AddInstance (YarpGateway)' +2026-02-01 22:13:51.467 +08:00 [INF] Route matched with {action = "AddInstance", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] AddInstance(System.String, CreateInstanceDto) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:13:51.476 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[@__clusterId_0='?', @__dto_DestinationId_1='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND s."DestinationId" = @__dto_DestinationId_1 +LIMIT 1 +2026-02-01 22:13:51.486 +08:00 [INF] Executed DbCommand (8ms) [Parameters=[@p0='?' (DbType = Int64), @p1='?', @p2='?', @p3='?' (DbType = Int64), @p4='?' (DbType = DateTime), @p5='?', @p6='?' (DbType = Int32), @p7='?' (DbType = Boolean), @p8='?' (DbType = Int32), @p9='?' (DbType = Int64), @p10='?' (DbType = DateTime), @p11='?' (DbType = Int32), @p12='?' (DbType = Int32)], CommandType='"Text"', CommandTimeout='30'] +INSERT INTO "ServiceInstances" ("Id", "Address", "ClusterId", "CreatedBy", "CreatedTime", "DestinationId", "Health", "IsDeleted", "Status", "UpdatedBy", "UpdatedTime", "Version", "Weight") +VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12); +2026-02-01 22:13:51.490 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 22:13:51.490 +08:00 [INF] Loaded 2 clusters from database +2026-02-01 22:13:51.490 +08:00 [INF] Executing OkObjectResult, writing value of type 'YarpGateway.Models.GwServiceInstance'. +2026-02-01 22:13:51.491 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.AddInstance (YarpGateway) in 23.8754ms +2026-02-01 22:13:51.491 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.AddInstance (YarpGateway)' +2026-02-01 22:13:51.491 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8080/api/gateway/clusters/product-cluster/instances - 200 null application/json; charset=utf-8 26.9521ms +2026-02-01 22:14:14.187 +08:00 [INF] Request starting HTTP/1.1 POST http://127.0.0.1:8080/api/gateway/reload - null null +2026-02-01 22:14:14.188 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.ReloadConfig (YarpGateway)' +2026-02-01 22:14:14.190 +08:00 [INF] Route matched with {action = "ReloadConfig", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] ReloadConfig() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:14:14.190 +08:00 [INF] Reloading route cache... +2026-02-01 22:14:14.194 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:14:14.194 +08:00 [INF] Route cache reloaded +2026-02-01 22:14:14.200 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:14:14.200 +08:00 [INF] Loaded 2 routes from database +2026-02-01 22:14:14.204 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 22:14:14.204 +08:00 [INF] Loaded 2 clusters from database +2026-02-01 22:14:14.204 +08:00 [INF] Executing OkObjectResult, writing value of type '<>f__AnonymousType0`1[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'. +2026-02-01 22:14:14.205 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.ReloadConfig (YarpGateway) in 15.273ms +2026-02-01 22:14:14.205 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.ReloadConfig (YarpGateway)' +2026-02-01 22:14:14.205 +08:00 [INF] Request finished HTTP/1.1 POST http://127.0.0.1:8080/api/gateway/reload - 200 null application/json; charset=utf-8 18.1485ms +2026-02-01 22:14:17.161 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/product/test - null null +2026-02-01 22:14:17.161 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/product/test - 404 0 null 0.1455ms +2026-02-01 22:14:17.161 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET http://127.0.0.1:8080/api/product/test, Response status code: 404 +2026-02-01 22:14:32.651 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/clusters/product-cluster/instances - null null +2026-02-01 22:14:32.651 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:14:32.654 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:14:32.660 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 22:14:32.660 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:14:32.660 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 6.4256ms +2026-02-01 22:14:32.660 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:14:32.660 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/clusters/product-cluster/instances - 200 null application/json; charset=utf-8 9.4366ms +2026-02-01 22:16:32.786 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes/global - null null +2026-02-01 22:16:32.786 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:16:32.786 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:16:32.791 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:16:32.791 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:16:32.791 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 5.1332ms +2026-02-01 22:16:32.791 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:16:32.792 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 5.8393ms +2026-02-01 22:16:35.327 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/product/test - null null +2026-02-01 22:16:35.327 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/product/test - 404 0 null 0.1327ms +2026-02-01 22:16:35.327 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET http://127.0.0.1:8080/api/product/test, Response status code: 404 +2026-02-01 22:17:17.995 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/product/test - null null +2026-02-01 22:17:17.995 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/product/test - 404 0 null 0.7272ms +2026-02-01 22:17:17.996 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET http://127.0.0.1:8080/api/product/test, Response status code: 404 +", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:16:37.617 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 22:16:37.618 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:16:37.654 +08:00 [INF] Loaded 2 routes from database +2026-02-01 22:16:37.654 +08:00 [INF] Loaded 2 clusters from database +2026-02-01 22:16:37.656 +08:00 [INF] Route cache initialized: 1 global routes, 1 tenant routes +2026-02-01 22:16:37.656 +08:00 [INF] Starting YARP Gateway +2026-02-01 22:16:37.670 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 22:16:37.672 +08:00 [ERR] Hosting failed to start +System.IO.IOException: Failed to bind to address http://0.0.0.0:8080: address already in use. + ---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use + ---> System.Net.Sockets.SocketException (48): Address already in use + at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName) + at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) + at System.Net.Sockets.Socket.Bind(EndPoint localEP) + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint) + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind() + --- End of inner exception stack trace --- + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind() + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_0`1.<g__OnBind|0>d.MoveNext() +--- End of stack trace from previous location --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) + --- End of inner exception stack trace --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken) + at Microsoft.Extensions.Hosting.Internal.Host.b__14_1(IHostedService service, CancellationToken token) + at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation) +2026-02-01 22:17:21.898 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 22:17:22.466 +08:00 [INF] Initializing route cache from database... +2026-02-01 22:17:22.492 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:17:22.492 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 22:17:22.498 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:17:22.529 +08:00 [INF] Loaded 2 routes from database +2026-02-01 22:17:22.529 +08:00 [INF] Loaded 2 clusters from database +2026-02-01 22:17:22.531 +08:00 [INF] Route cache initialized: 1 global routes, 1 tenant routes +2026-02-01 22:17:22.531 +08:00 [INF] Starting YARP Gateway +2026-02-01 22:17:22.545 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 22:17:22.547 +08:00 [ERR] Hosting failed to start +System.IO.IOException: Failed to bind to address http://0.0.0.0:8080: address already in use. + ---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use + ---> System.Net.Sockets.SocketException (48): Address already in use + at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName) + at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) + at System.Net.Sockets.Socket.Bind(EndPoint localEP) + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint) + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind() + --- End of inner exception stack trace --- + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind() + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_0`1.<g__OnBind|0>d.MoveNext() +--- End of stack trace from previous location --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) + --- End of inner exception stack trace --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken) + at Microsoft.Extensions.Hosting.Internal.Host.b__14_1(IHostedService service, CancellationToken token) + at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation) +2026-02-01 22:17:49.266 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 22:17:49.839 +08:00 [INF] Initializing route cache from database... +2026-02-01 22:17:49.863 +08:00 [INF] Executed DbCommand (7ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 22:17:49.863 +08:00 [INF] Executed DbCommand (10ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:17:49.867 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:17:49.902 +08:00 [INF] Loaded 2 routes from database +2026-02-01 22:17:49.902 +08:00 [INF] Loaded 2 clusters from database +2026-02-01 22:17:49.903 +08:00 [INF] Route cache initialized: 1 global routes, 1 tenant routes +2026-02-01 22:17:49.903 +08:00 [INF] Starting YARP Gateway +2026-02-01 22:17:49.918 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 22:17:49.919 +08:00 [ERR] Hosting failed to start +System.IO.IOException: Failed to bind to address http://0.0.0.0:8080: address already in use. + ---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use + ---> System.Net.Sockets.SocketException (48): Address already in use + at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, Boolean disconnectOnFailure, String callerName) + at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) + at System.Net.Sockets.Socket.Bind(EndPoint localEP) + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint) + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind() + --- End of inner exception stack trace --- + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionListener.Bind() + at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(EndPoint endpoint, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.TransportManager.BindAsync(EndPoint endPoint, ConnectionDelegate connectionDelegate, EndpointConfig endpointConfig, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_0`1.<g__OnBind|0>d.MoveNext() +--- End of stack trace from previous location --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) + --- End of inner exception stack trace --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken) + at Microsoft.Extensions.Hosting.Internal.Host.b__14_1(IHostedService service, CancellationToken token) + at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation) +2026-02-01 22:18:29.315 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 22:18:29.898 +08:00 [INF] Initializing route cache from database... +2026-02-01 22:18:29.922 +08:00 [INF] Executed DbCommand (9ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:18:29.922 +08:00 [INF] Executed DbCommand (9ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 22:18:29.930 +08:00 [INF] Executed DbCommand (6ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:18:29.959 +08:00 [INF] Loaded 2 routes from database +2026-02-01 22:18:29.959 +08:00 [INF] Loaded 2 clusters from database +2026-02-01 22:18:29.961 +08:00 [INF] Route cache initialized: 1 global routes, 1 tenant routes +2026-02-01 22:18:29.961 +08:00 [INF] Starting YARP Gateway +2026-02-01 22:18:29.975 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 22:18:29.977 +08:00 [INF] Now listening on: http://0.0.0.0:8080 +2026-02-01 22:18:29.977 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2026-02-01 22:18:29.977 +08:00 [INF] Hosting environment: Development +2026-02-01 22:18:29.977 +08:00 [INF] Content root path: /Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway +2026-02-01 22:19:00.199 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/product/test - null null +2026-02-01 22:19:00.212 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/product/test - 404 0 null 13.5757ms +2026-02-01 22:19:00.215 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET http://127.0.0.1:8080/api/product/test, Response status code: 404 +2026-02-01 22:19:01.451 +08:00 [INF] Request starting HTTP/1.1 GET http://0.0.0.0:8080/ - null null +2026-02-01 22:19:01.453 +08:00 [INF] Request finished HTTP/1.1 GET http://0.0.0.0:8080/ - 404 0 null 1.7052ms +2026-02-01 22:19:01.454 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET http://0.0.0.0:8080/, Response status code: 404 +2026-02-01 22:19:07.472 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/ - null null +2026-02-01 22:19:07.474 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/ - 404 0 null 1.3807ms +2026-02-01 22:19:07.474 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET http://localhost:8080/, Response status code: 404 +2026-02-01 22:19:10.624 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:19:10.626 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:19:10.636 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:19:10.646 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:19:10.657 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:19:10.669 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 31.0448ms +2026-02-01 22:19:10.669 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:19:10.670 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 45.8155ms +2026-02-01 22:19:10.873 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/favicon.ico - null null +2026-02-01 22:19:10.874 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/favicon.ico - 404 0 null 0.4219ms +2026-02-01 22:19:10.874 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET http://localhost:8080/favicon.ico, Response status code: 404 +icrosoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.<>c__DisplayClass28_0`1.<g__OnBind|0>d.MoveNext() +--- End of stack trace from previous location --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) + --- End of inner exception stack trace --- + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.BindEndpointAsync(ListenOptions endpoint, AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.BindAsync(AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.EndpointsStrategy.BindAsync(AddressBindContext context, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.BindAsync(CancellationToken cancellationToken) + at Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerImpl.StartAsync[TContext](IHttpApplication`1 application, CancellationToken cancellationToken) + at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken) + at Microsoft.Extensions.Hosting.Internal.Host.b__14_1(IHostedService service, CancellationToken token) + at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation) +2026-02-01 22:20:22.965 +08:00 [INF] User profile is available. Using '/Users/movingsam/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. +2026-02-01 22:20:23.632 +08:00 [INF] Initializing route cache from database... +2026-02-01 22:20:23.651 +08:00 [INF] Executed DbCommand (9ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:20:23.651 +08:00 [INF] Executed DbCommand (6ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT s."ClusterId", s."Id", s."Address", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."Status" = 1 AND NOT (s."IsDeleted") +ORDER BY s."ClusterId" +2026-02-01 22:20:23.662 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."Status" = 1 AND NOT (t."IsDeleted") +2026-02-01 22:20:23.688 +08:00 [INF] Loaded 2 routes from database +2026-02-01 22:20:23.688 +08:00 [INF] Loaded 2 clusters from database +2026-02-01 22:20:23.689 +08:00 [INF] Route cache initialized: 1 global routes, 1 tenant routes +2026-02-01 22:20:23.690 +08:00 [INF] Starting YARP Gateway +2026-02-01 22:20:23.705 +08:00 [WRN] Overriding address(es) 'http://localhost:5046'. Binding to endpoints defined via IConfiguration and/or UseKestrel() instead. +2026-02-01 22:20:23.706 +08:00 [INF] Now listening on: http://0.0.0.0:8080 +2026-02-01 22:20:23.707 +08:00 [INF] Application started. Press Ctrl+C to shut down. +2026-02-01 22:20:23.707 +08:00 [INF] Hosting environment: Development +2026-02-01 22:20:23.707 +08:00 [INF] Content root path: /Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway +2026-02-01 22:20:29.093 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/tenants - null null +2026-02-01 22:20:29.106 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:20:29.111 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:20:29.119 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:20:29.126 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:20:29.138 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 25.8851ms +2026-02-01 22:20:29.139 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:20:29.140 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 47.3449ms +2026-02-01 22:20:35.542 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes/global - null null +2026-02-01 22:20:35.543 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:20:35.546 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:20:35.553 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:20:35.554 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:20:35.557 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 10.873ms +2026-02-01 22:20:35.557 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:20:35.557 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 14.4363ms +2026-02-01 22:21:01.471 +08:00 [INF] Request starting HTTP/1.1 GET http://127.0.0.1:8080/api/product/test - null null +2026-02-01 22:21:01.473 +08:00 [INF] Request finished HTTP/1.1 GET http://127.0.0.1:8080/api/product/test - 404 0 null 1.7851ms +2026-02-01 22:21:01.474 +08:00 [INF] Request reached the end of the middleware pipeline without being handled by application code. Request path: GET http://127.0.0.1:8080/api/product/test, Response status code: 404 +2026-02-01 22:21:10.880 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:21:10.882 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:21:10.882 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:21:10.882 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:21:10.888 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:21:10.888 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:21:10.889 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 6.5091ms +2026-02-01 22:21:10.889 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:21:10.889 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 9.3552ms +2026-02-01 22:21:12.638 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:21:12.639 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:21:12.640 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:21:12.641 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:21:12.647 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:21:12.648 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:21:12.648 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 7.2865ms +2026-02-01 22:21:12.649 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:21:12.650 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 11.8347ms +2026-02-01 22:21:12.653 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 22:21:12.654 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:21:12.654 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 22:21:12.666 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:21:12.689 +08:00 [INF] Executed DbCommand (11ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 22:21:12.689 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:21:12.689 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 23.2372ms +2026-02-01 22:21:12.690 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 22:21:12.690 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 36.4262ms +2026-02-01 22:21:12.691 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 22:21:12.691 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:21:12.691 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:21:12.694 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:21:12.704 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 22:21:12.706 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:21:12.707 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 12.8864ms +2026-02-01 22:21:12.707 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:21:12.707 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 16.0741ms +2026-02-01 22:21:13.505 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:21:13.506 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:21:13.507 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:21:13.507 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:21:13.515 +08:00 [INF] Executed DbCommand (7ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:21:13.516 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:21:13.516 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 9.397ms +2026-02-01 22:21:13.516 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:21:13.517 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 11.5291ms +2026-02-01 22:25:30.498 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:25:30.498 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:25:30.498 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:25:30.498 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:25:30.533 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:25:30.534 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:25:30.535 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 36.8297ms +2026-02-01 22:25:30.535 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:25:30.535 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 37.6909ms +2026-02-01 22:26:22.245 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:26:22.245 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:26:22.245 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:26:22.245 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:26:22.249 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:26:22.250 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:26:22.250 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.209ms +2026-02-01 22:26:22.251 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:26:22.251 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 6.6294ms +2026-02-01 22:31:41.925 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:31:41.926 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:41.926 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:31:41.926 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:41.958 +08:00 [INF] Executed DbCommand (7ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:31:41.958 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:41.958 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 31.8244ms +2026-02-01 22:31:41.958 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:31:41.958 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 32.8773ms +2026-02-01 22:31:43.595 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:31:43.595 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:43.595 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:31:43.596 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:43.604 +08:00 [INF] Executed DbCommand (7ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:31:43.605 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:43.605 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 9.008ms +2026-02-01 22:31:43.605 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:31:43.606 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 10.8715ms +2026-02-01 22:31:44.652 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:31:44.652 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:44.652 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:31:44.652 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:44.657 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:31:44.657 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:44.657 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 5.4168ms +2026-02-01 22:31:44.658 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:31:44.658 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 6.1249ms +2026-02-01 22:31:46.251 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:31:46.251 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:46.251 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:31:46.251 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:46.256 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:31:46.257 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:46.257 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.5403ms +2026-02-01 22:31:46.257 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:31:46.257 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 6.5585ms +2026-02-01 22:31:46.745 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:31:46.746 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:46.746 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:31:46.746 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:46.751 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:31:46.752 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:46.752 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 5.6117ms +2026-02-01 22:31:46.752 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:31:46.752 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 6.6457ms +2026-02-01 22:31:48.657 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/product-cluster/instances - null null +2026-02-01 22:31:48.657 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:48.658 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:31:48.659 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:48.666 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 22:31:48.666 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:48.666 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 7.116ms +2026-02-01 22:31:48.666 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:31:48.666 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/product-cluster/instances - 200 null application/json; charset=utf-8 9.4147ms +2026-02-01 22:31:49.924 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:31:49.925 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:49.925 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:31:49.925 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:49.930 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:31:49.930 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:49.931 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.2451ms +2026-02-01 22:31:49.931 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:31:49.931 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 6.2486ms +2026-02-01 22:31:51.612 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:31:51.612 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:51.612 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:31:51.612 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:51.617 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:31:51.617 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:51.618 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 5.4269ms +2026-02-01 22:31:51.618 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:31:51.618 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 6.0851ms +2026-02-01 22:31:51.951 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:31:51.952 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:51.952 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:31:51.952 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:51.957 +08:00 [INF] Executed DbCommand (5ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:31:51.958 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:51.958 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 6.4318ms +2026-02-01 22:31:51.960 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:31:51.961 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 9.0549ms +2026-02-01 22:31:54.041 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 22:31:54.041 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:54.042 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 22:31:54.042 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:54.047 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 22:31:54.047 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:54.047 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 5.2779ms +2026-02-01 22:31:54.047 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 22:31:54.047 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 6.3321ms +2026-02-01 22:31:55.255 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 22:31:55.255 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:55.256 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:31:55.256 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:55.261 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 22:31:55.261 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:55.262 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 5.9988ms +2026-02-01 22:31:55.262 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:31:55.262 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 6.751ms +2026-02-01 22:31:56.595 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:31:56.595 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:31:56.595 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:31:56.595 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:31:56.600 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:31:56.600 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:31:56.601 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 5.0439ms +2026-02-01 22:31:56.601 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:31:56.601 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 6.1072ms +2026-02-01 22:32:01.664 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/product-cluster/instances - null null +2026-02-01 22:32:01.664 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:01.664 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:32:01.664 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:01.668 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 22:32:01.669 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:01.669 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 4.9407ms +2026-02-01 22:32:01.669 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:32:01.670 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/product-cluster/instances - 200 null application/json; charset=utf-8 5.639ms +2026-02-01 22:32:04.216 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:32:04.216 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:04.216 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:04.217 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:04.222 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:32:04.222 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:04.223 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.4752ms +2026-02-01 22:32:04.223 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:04.223 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 6.7163ms +2026-02-01 22:32:04.591 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:32:04.591 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:04.591 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:04.591 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:04.595 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:32:04.595 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:04.596 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 4.5298ms +2026-02-01 22:32:04.596 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:04.596 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 5.4523ms +2026-02-01 22:32:12.562 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:32:12.562 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:12.562 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:12.563 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:12.568 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:32:12.568 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:12.569 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 6.2462ms +2026-02-01 22:32:12.569 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:12.569 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 7.22ms +2026-02-01 22:32:13.960 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 22:32:13.960 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:13.960 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 22:32:13.960 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:13.965 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 22:32:13.965 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:13.966 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 5.5422ms +2026-02-01 22:32:13.966 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 22:32:13.966 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 6.2859ms +2026-02-01 22:32:17.041 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 22:32:17.041 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:17.041 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:32:17.041 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:17.046 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 22:32:17.046 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:17.047 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 5.0143ms +2026-02-01 22:32:17.047 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:32:17.047 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 5.7629ms +2026-02-01 22:32:21.920 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:32:21.920 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:21.921 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:21.921 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:21.925 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:32:21.925 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:21.925 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 4.7163ms +2026-02-01 22:32:21.926 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:21.926 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 5.3019ms +2026-02-01 22:32:24.298 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:32:24.298 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:24.298 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:24.298 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:24.303 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:32:24.303 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:24.304 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.0583ms +2026-02-01 22:32:24.304 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:24.304 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 6.0625ms +2026-02-01 22:32:24.762 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:32:24.762 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:24.762 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:24.762 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:24.768 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:32:24.768 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:24.769 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 6.0394ms +2026-02-01 22:32:24.769 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:24.769 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 6.762ms +2026-02-01 22:32:25.372 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:32:25.373 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:25.373 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:25.373 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:25.379 +08:00 [INF] Executed DbCommand (6ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:32:25.380 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:25.380 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 7.209ms +2026-02-01 22:32:25.380 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:25.380 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 7.8575ms +2026-02-01 22:32:25.383 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:32:25.384 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:25.384 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:25.384 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:25.387 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:32:25.388 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:25.388 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 4.2493ms +2026-02-01 22:32:25.388 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:25.388 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 4.7142ms +2026-02-01 22:32:25.389 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 22:32:25.389 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:25.390 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 22:32:25.390 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:25.394 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 22:32:25.394 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:25.394 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 4.3996ms +2026-02-01 22:32:25.394 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 22:32:25.394 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 4.9442ms +2026-02-01 22:32:25.395 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 22:32:25.395 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:25.395 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:32:25.395 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:25.398 +08:00 [INF] Executed DbCommand (2ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 22:32:25.398 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:25.399 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 3.4243ms +2026-02-01 22:32:25.399 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:32:25.399 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 3.7777ms +2026-02-01 22:32:29.352 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:32:29.352 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:29.352 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:29.352 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:29.357 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:32:29.357 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:29.357 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 5.0185ms +2026-02-01 22:32:29.357 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:29.357 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 5.594ms +2026-02-01 22:32:31.246 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:32:31.246 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:31.246 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:31.246 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:31.250 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:32:31.250 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:31.251 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 4.5497ms +2026-02-01 22:32:31.251 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:31.251 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 4.979ms +2026-02-01 22:32:31.255 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - null null +2026-02-01 22:32:31.255 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:31.255 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:31.255 +08:00 [INF] Route matched with {action = "GetGlobalRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetGlobalRoutes() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:31.259 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."IsGlobal" AND NOT (t."IsDeleted") +2026-02-01 22:32:31.259 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:31.259 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway) in 4.2887ms +2026-02-01 22:32:31.259 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetGlobalRoutes (YarpGateway)' +2026-02-01 22:32:31.259 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/routes/global - 200 null application/json; charset=utf-8 4.6967ms +2026-02-01 22:32:31.260 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - null null +2026-02-01 22:32:31.260 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:31.261 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 22:32:31.261 +08:00 [INF] Route matched with {action = "GetTenantRoutes", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenantRoutes(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:31.265 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__tenantCode_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."ClusterId", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."IsGlobal", t."PathPattern", t."Priority", t."ServiceName", t."Status", t."TenantCode", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "TenantRoutes" AS t +WHERE t."TenantCode" = @__tenantCode_0 AND NOT (t."IsDeleted") +2026-02-01 22:32:31.265 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenantRoute, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:31.266 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway) in 4.8276ms +2026-02-01 22:32:31.266 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenantRoutes (YarpGateway)' +2026-02-01 22:32:31.266 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants/1668/routes - 200 null application/json; charset=utf-8 5.2765ms +2026-02-01 22:32:31.266 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - null null +2026-02-01 22:32:31.267 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:31.267 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:32:31.267 +08:00 [INF] Route matched with {action = "GetInstances", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetInstances(System.String) on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:31.271 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[@__clusterId_0='?'], CommandType='"Text"', CommandTimeout='30'] +SELECT s."Id", s."Address", s."ClusterId", s."CreatedBy", s."CreatedTime", s."DestinationId", s."Health", s."IsDeleted", s."Status", s."UpdatedBy", s."UpdatedTime", s."Version", s."Weight" +FROM "ServiceInstances" AS s +WHERE s."ClusterId" = @__clusterId_0 AND NOT (s."IsDeleted") +2026-02-01 22:32:31.271 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwServiceInstance, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:31.272 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway) in 4.6903ms +2026-02-01 22:32:31.272 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetInstances (YarpGateway)' +2026-02-01 22:32:31.272 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/clusters/1668-backend/instances - 200 null application/json; charset=utf-8 5.1732ms +2026-02-01 22:32:31.994 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 22:32:31.994 +08:00 [INF] CORS policy execution successful. +2026-02-01 22:32:31.994 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:31.994 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 22:32:31.999 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 22:32:32.000 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 22:32:32.000 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.5837ms +2026-02-01 22:32:32.000 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 22:32:32.000 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 5.9601ms +2026-02-01 23:02:32.878 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 23:02:32.879 +08:00 [INF] CORS policy execution successful. +2026-02-01 23:02:32.879 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 23:02:32.879 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 23:02:32.907 +08:00 [INF] Executed DbCommand (4ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 23:02:32.908 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 23:02:32.908 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 28.7787ms +2026-02-01 23:02:32.908 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 23:02:32.908 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 30.5865ms +2026-02-01 23:02:32.909 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 23:02:32.909 +08:00 [INF] CORS policy execution successful. +2026-02-01 23:02:32.909 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 23:02:32.909 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 23:02:32.913 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 23:02:32.913 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 23:02:32.914 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 5.3412ms +2026-02-01 23:02:32.914 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 23:02:32.914 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 499 null application/json; charset=utf-8 5.6739ms +2026-02-01 23:02:33.168 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - null null +2026-02-01 23:02:33.168 +08:00 [INF] CORS policy execution successful. +2026-02-01 23:02:33.168 +08:00 [INF] Executing endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 23:02:33.168 +08:00 [INF] Route matched with {action = "GetTenants", controller = "GatewayConfig"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.IActionResult] GetTenants() on controller YarpGateway.Controllers.GatewayConfigController (YarpGateway). +2026-02-01 23:02:33.172 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType='"Text"', CommandTimeout='30'] +SELECT t."Id", t."CreatedBy", t."CreatedTime", t."IsDeleted", t."Status", t."TenantCode", t."TenantName", t."UpdatedBy", t."UpdatedTime", t."Version" +FROM "Tenants" AS t +WHERE NOT (t."IsDeleted") +2026-02-01 23:02:33.172 +08:00 [INF] Executing OkObjectResult, writing value of type 'System.Collections.Generic.List`1[[YarpGateway.Models.GwTenant, YarpGateway, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'. +2026-02-01 23:02:33.172 +08:00 [INF] Executed action YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway) in 3.8746ms +2026-02-01 23:02:33.172 +08:00 [INF] Executed endpoint 'YarpGateway.Controllers.GatewayConfigController.GetTenants (YarpGateway)' +2026-02-01 23:02:33.172 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:8080/api/gateway/tenants - 200 null application/json; charset=utf-8 4.2812ms diff --git a/obj/Debug/net10.0/.NETCoreApp,Version=v10.0.AssemblyAttributes.cs b/obj/Debug/net10.0/.NETCoreApp,Version=v10.0.AssemblyAttributes.cs new file mode 100644 index 0000000..925b135 --- /dev/null +++ b/obj/Debug/net10.0/.NETCoreApp,Version=v10.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")] diff --git a/obj/Debug/net10.0/YarpGate.7B3C040B.Up2Date b/obj/Debug/net10.0/YarpGate.7B3C040B.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/obj/Debug/net10.0/YarpGateway.AssemblyInfo.cs b/obj/Debug/net10.0/YarpGateway.AssemblyInfo.cs new file mode 100644 index 0000000..cdc3578 --- /dev/null +++ b/obj/Debug/net10.0/YarpGateway.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("YarpGateway")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+6ca282d2088e2c62e6b0c2bbc54720117c8dc08f")] +[assembly: System.Reflection.AssemblyProductAttribute("YarpGateway")] +[assembly: System.Reflection.AssemblyTitleAttribute("YarpGateway")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/obj/Debug/net10.0/YarpGateway.AssemblyInfoInputs.cache b/obj/Debug/net10.0/YarpGateway.AssemblyInfoInputs.cache new file mode 100644 index 0000000..0805ceb --- /dev/null +++ b/obj/Debug/net10.0/YarpGateway.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +24722b40465d63c21132d56deedee29b8a7fc957b18fac2d4454b56da1ef9722 diff --git a/obj/Debug/net10.0/YarpGateway.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net10.0/YarpGateway.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..7556f3d --- /dev/null +++ b/obj/Debug/net10.0/YarpGateway.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,31 @@ +is_global = true +build_property.TargetFramework = net10.0 +build_property.TargetFramework = net10.0 +build_property.TargetPlatformMinVersion = +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = true +build_property.UsingMicrosoftNETSdkWeb = true +build_property.ProjectTypeGuids = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.TargetFrameworkIdentifier = .NETCoreApp +build_property.TargetFrameworkVersion = v10.0 +build_property.RootNamespace = YarpGateway +build_property.RootNamespace = YarpGateway +build_property.ProjectDir = /Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.RazorLangVersion = 9.0 +build_property.SupportLocalizedComponentNames = +build_property.GenerateRazorMetadataSourceChecksumAttributes = +build_property.MSBuildProjectDirectory = /Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway +build_property._RazorSourceGeneratorDebug = +build_property.EffectiveAnalysisLevelStyle = 10.0 +build_property.EnableCodeStyleSeverity = diff --git a/obj/Debug/net10.0/YarpGateway.GlobalUsings.g.cs b/obj/Debug/net10.0/YarpGateway.GlobalUsings.g.cs new file mode 100644 index 0000000..5e6145d --- /dev/null +++ b/obj/Debug/net10.0/YarpGateway.GlobalUsings.g.cs @@ -0,0 +1,17 @@ +// +global using Microsoft.AspNetCore.Builder; +global using Microsoft.AspNetCore.Hosting; +global using Microsoft.AspNetCore.Http; +global using Microsoft.AspNetCore.Routing; +global using Microsoft.Extensions.Configuration; +global using Microsoft.Extensions.DependencyInjection; +global using Microsoft.Extensions.Hosting; +global using Microsoft.Extensions.Logging; +global using System; +global using System.Collections.Generic; +global using System.IO; +global using System.Linq; +global using System.Net.Http; +global using System.Net.Http.Json; +global using System.Threading; +global using System.Threading.Tasks; diff --git a/obj/Debug/net10.0/YarpGateway.MvcApplicationPartsAssemblyInfo.cache b/obj/Debug/net10.0/YarpGateway.MvcApplicationPartsAssemblyInfo.cache new file mode 100644 index 0000000..e69de29 diff --git a/obj/Debug/net10.0/YarpGateway.assets.cache b/obj/Debug/net10.0/YarpGateway.assets.cache new file mode 100644 index 0000000..5bcfc75 Binary files /dev/null and b/obj/Debug/net10.0/YarpGateway.assets.cache differ diff --git a/obj/Debug/net10.0/YarpGateway.csproj.AssemblyReference.cache b/obj/Debug/net10.0/YarpGateway.csproj.AssemblyReference.cache new file mode 100644 index 0000000..4d1e321 Binary files /dev/null and b/obj/Debug/net10.0/YarpGateway.csproj.AssemblyReference.cache differ diff --git a/obj/Debug/net10.0/YarpGateway.csproj.CoreCompileInputs.cache b/obj/Debug/net10.0/YarpGateway.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..6ad9a69 --- /dev/null +++ b/obj/Debug/net10.0/YarpGateway.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +afff8da1b7fa5b8af5002a8af31264c6b173420be4317056e1ed15817f3d9403 diff --git a/obj/Debug/net10.0/YarpGateway.csproj.FileListAbsolute.txt b/obj/Debug/net10.0/YarpGateway.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..16f27ac --- /dev/null +++ b/obj/Debug/net10.0/YarpGateway.csproj.FileListAbsolute.txt @@ -0,0 +1,139 @@ +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/YarpGateway.csproj.AssemblyReference.cache +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/rpswa.dswa.cache.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/YarpGateway.GeneratedMSBuildEditorConfig.editorconfig +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/YarpGateway.AssemblyInfoInputs.cache +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/YarpGateway.AssemblyInfo.cs +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/YarpGateway.csproj.CoreCompileInputs.cache +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/YarpGateway.MvcApplicationPartsAssemblyInfo.cache +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/appsettings.Development.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/appsettings.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/YarpGateway.staticwebassets.endpoints.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/YarpGateway +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/YarpGateway.deps.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/YarpGateway.runtimeconfig.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/YarpGateway.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/YarpGateway.pdb +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Humanizer.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.Bcl.AsyncInterfaces.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.Build.Locator.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.CodeAnalysis.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.CodeAnalysis.CSharp.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Abstractions.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Design.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.EntityFrameworkCore.Relational.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.Extensions.DependencyModel.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.IdentityModel.Abstractions.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.IdentityModel.JsonWebTokens.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.IdentityModel.Logging.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.IdentityModel.Protocols.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Microsoft.IdentityModel.Tokens.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Mono.TextTemplating.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Npgsql.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Pipelines.Sockets.Unofficial.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Serilog.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Serilog.AspNetCore.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Serilog.Extensions.Hosting.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Serilog.Extensions.Logging.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Serilog.Formatting.Compact.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Serilog.Settings.Configuration.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Serilog.Sinks.Console.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Serilog.Sinks.Debug.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Serilog.Sinks.File.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/StackExchange.Redis.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/System.CodeDom.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/System.Composition.AttributedModel.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/System.Composition.Convention.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/System.Composition.Hosting.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/System.Composition.Runtime.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/System.Composition.TypedParts.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/System.IdentityModel.Tokens.Jwt.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/System.IO.Hashing.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/Yarp.ReverseProxy.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/bin/Debug/net10.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/rjimswa.dswa.cache.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/rjsmrazor.dswa.cache.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/scopedcss/bundle/YarpGateway.styles.css +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/staticwebassets.build.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/staticwebassets.build.json.cache +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/staticwebassets.development.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/staticwebassets.build.endpoints.json +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/swae.build.ex.cache +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/YarpGate.7B3C040B.Up2Date +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/YarpGateway.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/refint/YarpGateway.dll +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/YarpGateway.pdb +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/YarpGateway.genruntimeconfig.cache +/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/Debug/net10.0/ref/YarpGateway.dll diff --git a/obj/Debug/net10.0/YarpGateway.dll b/obj/Debug/net10.0/YarpGateway.dll new file mode 100644 index 0000000..9ed99c6 Binary files /dev/null and b/obj/Debug/net10.0/YarpGateway.dll differ diff --git a/obj/Debug/net10.0/YarpGateway.genruntimeconfig.cache b/obj/Debug/net10.0/YarpGateway.genruntimeconfig.cache new file mode 100644 index 0000000..0a97416 --- /dev/null +++ b/obj/Debug/net10.0/YarpGateway.genruntimeconfig.cache @@ -0,0 +1 @@ +91dc09f92d17500e9b625ba010ff6aab83330f7d01b531307947e66a3c0af8d6 diff --git a/obj/Debug/net10.0/YarpGateway.pdb b/obj/Debug/net10.0/YarpGateway.pdb new file mode 100644 index 0000000..96f6229 Binary files /dev/null and b/obj/Debug/net10.0/YarpGateway.pdb differ diff --git a/obj/Debug/net10.0/apphost b/obj/Debug/net10.0/apphost new file mode 100755 index 0000000..23ce3dc Binary files /dev/null and b/obj/Debug/net10.0/apphost differ diff --git a/obj/Debug/net10.0/ref/YarpGateway.dll b/obj/Debug/net10.0/ref/YarpGateway.dll new file mode 100644 index 0000000..643dd93 Binary files /dev/null and b/obj/Debug/net10.0/ref/YarpGateway.dll differ diff --git a/obj/Debug/net10.0/refint/YarpGateway.dll b/obj/Debug/net10.0/refint/YarpGateway.dll new file mode 100644 index 0000000..643dd93 Binary files /dev/null and b/obj/Debug/net10.0/refint/YarpGateway.dll differ diff --git a/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json b/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json new file mode 100644 index 0000000..bf4ad3f --- /dev/null +++ b/obj/Debug/net10.0/rjsmcshtml.dswa.cache.json @@ -0,0 +1 @@ +{"GlobalPropertiesHash":"who4fmL7ycnXxq++J8j9Kcv1lb9J8xELeJKP5hm7kMs=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["TjxGCqcuiGNPgVk47lkT2aF1p2cRSQTuAmFnM3yAtFA=","uSrTJ1IOyLboCEM3cAAeeX4m0Yd2CffbM9hvDkA0z88=","b06gMgYepigYvzKiU5u4\u002BLze92BFLI8SMoren3tjw\u002Bk=","Mmgj3g0hKtMl9sg/01LDta6ZKAwRjPqySXrkhOZK90M=","r00k37JQu0NtvD9Jo7hW6I4xSRNRLDiGIbrH9idcE6w=","PEd/10CX25hLnx6qvCbAgQIoDtlx6iLnWD5X\u002BAWzA3M=","XrwXdmUkJKzIKj7oWnVdnpyrOlGO4Xd09DgJaOjP4rw=","pGjuh5BybHYNh/b2rWWquve/yGfLVf/qBz7m\u002BnYMZuo=","ITscrUDMMFSqVWhfIvLGeGIGOWaU0o9p9FBsqbCPn1w="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/obj/Debug/net10.0/rjsmrazor.dswa.cache.json b/obj/Debug/net10.0/rjsmrazor.dswa.cache.json new file mode 100644 index 0000000..ebfc434 --- /dev/null +++ b/obj/Debug/net10.0/rjsmrazor.dswa.cache.json @@ -0,0 +1 @@ +{"GlobalPropertiesHash":"OyqIvbc/GNMFNwkdzMksG9lHlCtVrIjoqP8GUkMbaL0=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["TjxGCqcuiGNPgVk47lkT2aF1p2cRSQTuAmFnM3yAtFA=","uSrTJ1IOyLboCEM3cAAeeX4m0Yd2CffbM9hvDkA0z88=","b06gMgYepigYvzKiU5u4\u002BLze92BFLI8SMoren3tjw\u002Bk=","Mmgj3g0hKtMl9sg/01LDta6ZKAwRjPqySXrkhOZK90M=","r00k37JQu0NtvD9Jo7hW6I4xSRNRLDiGIbrH9idcE6w=","PEd/10CX25hLnx6qvCbAgQIoDtlx6iLnWD5X\u002BAWzA3M=","XrwXdmUkJKzIKj7oWnVdnpyrOlGO4Xd09DgJaOjP4rw=","pGjuh5BybHYNh/b2rWWquve/yGfLVf/qBz7m\u002BnYMZuo=","ITscrUDMMFSqVWhfIvLGeGIGOWaU0o9p9FBsqbCPn1w="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/obj/Debug/net10.0/rpswa.dswa.cache.json b/obj/Debug/net10.0/rpswa.dswa.cache.json new file mode 100644 index 0000000..56de85d --- /dev/null +++ b/obj/Debug/net10.0/rpswa.dswa.cache.json @@ -0,0 +1 @@ +{"GlobalPropertiesHash":"PqlGqjnMDUXs1MO+eGgstQ0AEnOikDWRNsNtFmNOUxc=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["TjxGCqcuiGNPgVk47lkT2aF1p2cRSQTuAmFnM3yAtFA=","uSrTJ1IOyLboCEM3cAAeeX4m0Yd2CffbM9hvDkA0z88="],"CachedAssets":{},"CachedCopyCandidates":{}} \ No newline at end of file diff --git a/obj/Debug/net10.0/staticwebassets.build.endpoints.json b/obj/Debug/net10.0/staticwebassets.build.endpoints.json new file mode 100644 index 0000000..5576e88 --- /dev/null +++ b/obj/Debug/net10.0/staticwebassets.build.endpoints.json @@ -0,0 +1 @@ +{"Version":1,"ManifestType":"Build","Endpoints":[]} \ No newline at end of file diff --git a/obj/Debug/net10.0/staticwebassets.build.json b/obj/Debug/net10.0/staticwebassets.build.json new file mode 100644 index 0000000..70ed7c2 --- /dev/null +++ b/obj/Debug/net10.0/staticwebassets.build.json @@ -0,0 +1 @@ +{"Version":1,"Hash":"QC8rQzJvJWiKNKtNrA3H4js4A9UpZtnAoMrjArXiE0w=","Source":"YarpGateway","BasePath":"/","Mode":"Root","ManifestType":"Build","ReferencedProjectsConfiguration":[],"DiscoveryPatterns":[],"Assets":[],"Endpoints":[]} \ No newline at end of file diff --git a/obj/Debug/net10.0/staticwebassets.build.json.cache b/obj/Debug/net10.0/staticwebassets.build.json.cache new file mode 100644 index 0000000..e108426 --- /dev/null +++ b/obj/Debug/net10.0/staticwebassets.build.json.cache @@ -0,0 +1 @@ +QC8rQzJvJWiKNKtNrA3H4js4A9UpZtnAoMrjArXiE0w= \ No newline at end of file diff --git a/obj/Debug/net10.0/swae.build.ex.cache b/obj/Debug/net10.0/swae.build.ex.cache new file mode 100644 index 0000000..e69de29 diff --git a/obj/YarpGateway.csproj.EntityFrameworkCore.targets b/obj/YarpGateway.csproj.EntityFrameworkCore.targets new file mode 100644 index 0000000..6b67a59 --- /dev/null +++ b/obj/YarpGateway.csproj.EntityFrameworkCore.targets @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/obj/YarpGateway.csproj.nuget.dgspec.json b/obj/YarpGateway.csproj.nuget.dgspec.json new file mode 100644 index 0000000..33a8ea8 --- /dev/null +++ b/obj/YarpGateway.csproj.nuget.dgspec.json @@ -0,0 +1,521 @@ +{ + "format": 1, + "restore": { + "/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/YarpGateway.csproj": {} + }, + "projects": { + "/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/YarpGateway.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/YarpGateway.csproj", + "projectName": "YarpGateway", + "projectPath": "/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/YarpGateway.csproj", + "packagesPath": "/Users/movingsam/.nuget/packages/", + "outputPath": "/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/Users/movingsam/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net10.0" + ], + "sources": { + "/usr/local/share/dotnet/library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net10.0": { + "targetAlias": "net10.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "all" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net10.0": { + "targetAlias": "net10.0", + "dependencies": { + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "target": "Package", + "version": "[10.0.0, )" + }, + "Microsoft.EntityFrameworkCore.Design": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[9.0.0, )" + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "target": "Package", + "version": "[9.0.0, )" + }, + "Serilog.AspNetCore": { + "target": "Package", + "version": "[8.0.0, )" + }, + "Serilog.Sinks.Console": { + "target": "Package", + "version": "[6.0.0, )" + }, + "Serilog.Sinks.File": { + "target": "Package", + "version": "[6.0.0, )" + }, + "StackExchange.Redis": { + "target": "Package", + "version": "[2.8.16, )" + }, + "Yarp.ReverseProxy": { + "target": "Package", + "version": "[2.2.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/10.0.101/PortableRuntimeIdentifierGraph.json", + "packagesToPrune": { + "Microsoft.AspNetCore": "(,10.0.32767]", + "Microsoft.AspNetCore.Antiforgery": "(,10.0.32767]", + "Microsoft.AspNetCore.App": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication.BearerToken": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication.Cookies": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication.Core": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication.OAuth": "(,10.0.32767]", + "Microsoft.AspNetCore.Authorization": "(,10.0.32767]", + "Microsoft.AspNetCore.Authorization.Policy": "(,10.0.32767]", + "Microsoft.AspNetCore.Components": "(,10.0.32767]", + "Microsoft.AspNetCore.Components.Authorization": "(,10.0.32767]", + "Microsoft.AspNetCore.Components.Endpoints": "(,10.0.32767]", + "Microsoft.AspNetCore.Components.Forms": "(,10.0.32767]", + "Microsoft.AspNetCore.Components.Server": "(,10.0.32767]", + "Microsoft.AspNetCore.Components.Web": "(,10.0.32767]", + "Microsoft.AspNetCore.Connections.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.CookiePolicy": "(,10.0.32767]", + "Microsoft.AspNetCore.Cors": "(,10.0.32767]", + "Microsoft.AspNetCore.Cryptography.Internal": "(,10.0.32767]", + "Microsoft.AspNetCore.Cryptography.KeyDerivation": "(,10.0.32767]", + "Microsoft.AspNetCore.DataProtection": "(,10.0.32767]", + "Microsoft.AspNetCore.DataProtection.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.DataProtection.Extensions": "(,10.0.32767]", + "Microsoft.AspNetCore.Diagnostics": "(,10.0.32767]", + "Microsoft.AspNetCore.Diagnostics.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Diagnostics.HealthChecks": "(,10.0.32767]", + "Microsoft.AspNetCore.HostFiltering": "(,10.0.32767]", + "Microsoft.AspNetCore.Hosting": "(,10.0.32767]", + "Microsoft.AspNetCore.Hosting.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Hosting.Server.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Html.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Http": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Connections": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Connections.Common": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Extensions": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Features": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Results": "(,10.0.32767]", + "Microsoft.AspNetCore.HttpLogging": "(,10.0.32767]", + "Microsoft.AspNetCore.HttpOverrides": "(,10.0.32767]", + "Microsoft.AspNetCore.HttpsPolicy": "(,10.0.32767]", + "Microsoft.AspNetCore.Identity": "(,10.0.32767]", + "Microsoft.AspNetCore.Localization": "(,10.0.32767]", + "Microsoft.AspNetCore.Localization.Routing": "(,10.0.32767]", + "Microsoft.AspNetCore.Metadata": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.ApiExplorer": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Core": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Cors": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.DataAnnotations": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Formatters.Json": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Formatters.Xml": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Localization": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Razor": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.RazorPages": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.TagHelpers": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.ViewFeatures": "(,10.0.32767]", + "Microsoft.AspNetCore.OutputCaching": "(,10.0.32767]", + "Microsoft.AspNetCore.RateLimiting": "(,10.0.32767]", + "Microsoft.AspNetCore.Razor": "(,10.0.32767]", + "Microsoft.AspNetCore.Razor.Runtime": "(,10.0.32767]", + "Microsoft.AspNetCore.RequestDecompression": "(,10.0.32767]", + "Microsoft.AspNetCore.ResponseCaching": "(,10.0.32767]", + "Microsoft.AspNetCore.ResponseCaching.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.ResponseCompression": "(,10.0.32767]", + "Microsoft.AspNetCore.Rewrite": "(,10.0.32767]", + "Microsoft.AspNetCore.Routing": "(,10.0.32767]", + "Microsoft.AspNetCore.Routing.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.HttpSys": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.IIS": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.IISIntegration": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.Kestrel": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.Kestrel.Core": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.Kestrel.Transport.Quic": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets": "(,10.0.32767]", + "Microsoft.AspNetCore.Session": "(,10.0.32767]", + "Microsoft.AspNetCore.SignalR": "(,10.0.32767]", + "Microsoft.AspNetCore.SignalR.Common": "(,10.0.32767]", + "Microsoft.AspNetCore.SignalR.Core": "(,10.0.32767]", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "(,10.0.32767]", + "Microsoft.AspNetCore.StaticAssets": "(,10.0.32767]", + "Microsoft.AspNetCore.StaticFiles": "(,10.0.32767]", + "Microsoft.AspNetCore.WebSockets": "(,10.0.32767]", + "Microsoft.AspNetCore.WebUtilities": "(,10.0.32767]", + "Microsoft.CSharp": "(,4.7.32767]", + "Microsoft.Extensions.Caching.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Caching.Memory": "(,10.0.32767]", + "Microsoft.Extensions.Configuration": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.Binder": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.CommandLine": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.FileExtensions": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.Ini": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.Json": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.KeyPerFile": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.UserSecrets": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.Xml": "(,10.0.32767]", + "Microsoft.Extensions.DependencyInjection": "(,10.0.32767]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Diagnostics": "(,10.0.32767]", + "Microsoft.Extensions.Diagnostics.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Diagnostics.HealthChecks": "(,10.0.32767]", + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Features": "(,10.0.32767]", + "Microsoft.Extensions.FileProviders.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.FileProviders.Composite": "(,10.0.32767]", + "Microsoft.Extensions.FileProviders.Physical": "(,10.0.32767]", + "Microsoft.Extensions.FileSystemGlobbing": "(,10.0.32767]", + "Microsoft.Extensions.Hosting": "(,10.0.32767]", + "Microsoft.Extensions.Hosting.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Http": "(,10.0.32767]", + "Microsoft.Extensions.Identity.Core": "(,10.0.32767]", + "Microsoft.Extensions.Identity.Stores": "(,10.0.32767]", + "Microsoft.Extensions.Localization": "(,10.0.32767]", + "Microsoft.Extensions.Localization.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Logging": "(,10.0.32767]", + "Microsoft.Extensions.Logging.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Logging.Configuration": "(,10.0.32767]", + "Microsoft.Extensions.Logging.Console": "(,10.0.32767]", + "Microsoft.Extensions.Logging.Debug": "(,10.0.32767]", + "Microsoft.Extensions.Logging.EventLog": "(,10.0.32767]", + "Microsoft.Extensions.Logging.EventSource": "(,10.0.32767]", + "Microsoft.Extensions.Logging.TraceSource": "(,10.0.32767]", + "Microsoft.Extensions.ObjectPool": "(,10.0.32767]", + "Microsoft.Extensions.Options": "(,10.0.32767]", + "Microsoft.Extensions.Options.ConfigurationExtensions": "(,10.0.32767]", + "Microsoft.Extensions.Options.DataAnnotations": "(,10.0.32767]", + "Microsoft.Extensions.Primitives": "(,10.0.32767]", + "Microsoft.Extensions.Validation": "(,10.0.32767]", + "Microsoft.Extensions.WebEncoders": "(,10.0.32767]", + "Microsoft.JSInterop": "(,10.0.32767]", + "Microsoft.Net.Http.Headers": "(,10.0.32767]", + "Microsoft.VisualBasic": "(,10.4.32767]", + "Microsoft.Win32.Primitives": "(,4.3.32767]", + "Microsoft.Win32.Registry": "(,5.0.32767]", + "runtime.any.System.Collections": "(,4.3.32767]", + "runtime.any.System.Diagnostics.Tools": "(,4.3.32767]", + "runtime.any.System.Diagnostics.Tracing": "(,4.3.32767]", + "runtime.any.System.Globalization": "(,4.3.32767]", + "runtime.any.System.Globalization.Calendars": "(,4.3.32767]", + "runtime.any.System.IO": "(,4.3.32767]", + "runtime.any.System.Reflection": "(,4.3.32767]", + "runtime.any.System.Reflection.Extensions": "(,4.3.32767]", + "runtime.any.System.Reflection.Primitives": "(,4.3.32767]", + "runtime.any.System.Resources.ResourceManager": "(,4.3.32767]", + "runtime.any.System.Runtime": "(,4.3.32767]", + "runtime.any.System.Runtime.Handles": "(,4.3.32767]", + "runtime.any.System.Runtime.InteropServices": "(,4.3.32767]", + "runtime.any.System.Text.Encoding": "(,4.3.32767]", + "runtime.any.System.Text.Encoding.Extensions": "(,4.3.32767]", + "runtime.any.System.Threading.Tasks": "(,4.3.32767]", + "runtime.any.System.Threading.Timer": "(,4.3.32767]", + "runtime.aot.System.Collections": "(,4.3.32767]", + "runtime.aot.System.Diagnostics.Tools": "(,4.3.32767]", + "runtime.aot.System.Diagnostics.Tracing": "(,4.3.32767]", + "runtime.aot.System.Globalization": "(,4.3.32767]", + "runtime.aot.System.Globalization.Calendars": "(,4.3.32767]", + "runtime.aot.System.IO": "(,4.3.32767]", + "runtime.aot.System.Reflection": "(,4.3.32767]", + "runtime.aot.System.Reflection.Extensions": "(,4.3.32767]", + "runtime.aot.System.Reflection.Primitives": "(,4.3.32767]", + "runtime.aot.System.Resources.ResourceManager": "(,4.3.32767]", + "runtime.aot.System.Runtime": "(,4.3.32767]", + "runtime.aot.System.Runtime.Handles": "(,4.3.32767]", + "runtime.aot.System.Runtime.InteropServices": "(,4.3.32767]", + "runtime.aot.System.Text.Encoding": "(,4.3.32767]", + "runtime.aot.System.Text.Encoding.Extensions": "(,4.3.32767]", + "runtime.aot.System.Threading.Tasks": "(,4.3.32767]", + "runtime.aot.System.Threading.Timer": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.debian.9-x64.runtime.native.System": "(,4.3.32767]", + "runtime.debian.9-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.debian.9-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.debian.9-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.fedora.27-x64.runtime.native.System": "(,4.3.32767]", + "runtime.fedora.27-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.fedora.27-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.fedora.27-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.fedora.28-x64.runtime.native.System": "(,4.3.32767]", + "runtime.fedora.28-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.fedora.28-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.fedora.28-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.opensuse.42.3-x64.runtime.native.System": "(,4.3.32767]", + "runtime.opensuse.42.3-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.opensuse.42.3-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.opensuse.42.3-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.ubuntu.18.04-x64.runtime.native.System": "(,4.3.32767]", + "runtime.ubuntu.18.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.ubuntu.18.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.ubuntu.18.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.unix.Microsoft.Win32.Primitives": "(,4.3.32767]", + "runtime.unix.System.Console": "(,4.3.32767]", + "runtime.unix.System.Diagnostics.Debug": "(,4.3.32767]", + "runtime.unix.System.IO.FileSystem": "(,4.3.32767]", + "runtime.unix.System.Net.Primitives": "(,4.3.32767]", + "runtime.unix.System.Net.Sockets": "(,4.3.32767]", + "runtime.unix.System.Private.Uri": "(,4.3.32767]", + "runtime.unix.System.Runtime.Extensions": "(,4.3.32767]", + "runtime.win.Microsoft.Win32.Primitives": "(,4.3.32767]", + "runtime.win.System.Console": "(,4.3.32767]", + "runtime.win.System.Diagnostics.Debug": "(,4.3.32767]", + "runtime.win.System.IO.FileSystem": "(,4.3.32767]", + "runtime.win.System.Net.Primitives": "(,4.3.32767]", + "runtime.win.System.Net.Sockets": "(,4.3.32767]", + "runtime.win.System.Runtime.Extensions": "(,4.3.32767]", + "runtime.win10-arm-aot.runtime.native.System.IO.Compression": "(,4.0.32767]", + "runtime.win10-arm64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.win10-x64-aot.runtime.native.System.IO.Compression": "(,4.0.32767]", + "runtime.win10-x86-aot.runtime.native.System.IO.Compression": "(,4.0.32767]", + "runtime.win7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.win7-x86.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.win7.System.Private.Uri": "(,4.3.32767]", + "runtime.win8-arm.runtime.native.System.IO.Compression": "(,4.3.32767]", + "System.AppContext": "(,4.3.32767]", + "System.Buffers": "(,5.0.32767]", + "System.Collections": "(,4.3.32767]", + "System.Collections.Concurrent": "(,4.3.32767]", + "System.Collections.Immutable": "(,10.0.32767]", + "System.Collections.NonGeneric": "(,4.3.32767]", + "System.Collections.Specialized": "(,4.3.32767]", + "System.ComponentModel": "(,4.3.32767]", + "System.ComponentModel.Annotations": "(,4.3.32767]", + "System.ComponentModel.EventBasedAsync": "(,4.3.32767]", + "System.ComponentModel.Primitives": "(,4.3.32767]", + "System.ComponentModel.TypeConverter": "(,4.3.32767]", + "System.Console": "(,4.3.32767]", + "System.Data.Common": "(,4.3.32767]", + "System.Data.DataSetExtensions": "(,4.4.32767]", + "System.Diagnostics.Contracts": "(,4.3.32767]", + "System.Diagnostics.Debug": "(,4.3.32767]", + "System.Diagnostics.DiagnosticSource": "(,10.0.32767]", + "System.Diagnostics.EventLog": "(,10.0.32767]", + "System.Diagnostics.FileVersionInfo": "(,4.3.32767]", + "System.Diagnostics.Process": "(,4.3.32767]", + "System.Diagnostics.StackTrace": "(,4.3.32767]", + "System.Diagnostics.TextWriterTraceListener": "(,4.3.32767]", + "System.Diagnostics.Tools": "(,4.3.32767]", + "System.Diagnostics.TraceSource": "(,4.3.32767]", + "System.Diagnostics.Tracing": "(,4.3.32767]", + "System.Drawing.Primitives": "(,4.3.32767]", + "System.Dynamic.Runtime": "(,4.3.32767]", + "System.Formats.Asn1": "(,10.0.32767]", + "System.Formats.Cbor": "(,10.0.32767]", + "System.Formats.Tar": "(,10.0.32767]", + "System.Globalization": "(,4.3.32767]", + "System.Globalization.Calendars": "(,4.3.32767]", + "System.Globalization.Extensions": "(,4.3.32767]", + "System.IO": "(,4.3.32767]", + "System.IO.Compression": "(,4.3.32767]", + "System.IO.Compression.ZipFile": "(,4.3.32767]", + "System.IO.FileSystem": "(,4.3.32767]", + "System.IO.FileSystem.AccessControl": "(,4.4.32767]", + "System.IO.FileSystem.DriveInfo": "(,4.3.32767]", + "System.IO.FileSystem.Primitives": "(,4.3.32767]", + "System.IO.FileSystem.Watcher": "(,4.3.32767]", + "System.IO.IsolatedStorage": "(,4.3.32767]", + "System.IO.MemoryMappedFiles": "(,4.3.32767]", + "System.IO.Pipelines": "(,10.0.32767]", + "System.IO.Pipes": "(,4.3.32767]", + "System.IO.Pipes.AccessControl": "(,5.0.32767]", + "System.IO.UnmanagedMemoryStream": "(,4.3.32767]", + "System.Linq": "(,4.3.32767]", + "System.Linq.AsyncEnumerable": "(,10.0.32767]", + "System.Linq.Expressions": "(,4.3.32767]", + "System.Linq.Parallel": "(,4.3.32767]", + "System.Linq.Queryable": "(,4.3.32767]", + "System.Memory": "(,5.0.32767]", + "System.Net.Http": "(,4.3.32767]", + "System.Net.Http.Json": "(,10.0.32767]", + "System.Net.NameResolution": "(,4.3.32767]", + "System.Net.NetworkInformation": "(,4.3.32767]", + "System.Net.Ping": "(,4.3.32767]", + "System.Net.Primitives": "(,4.3.32767]", + "System.Net.Requests": "(,4.3.32767]", + "System.Net.Security": "(,4.3.32767]", + "System.Net.ServerSentEvents": "(,10.0.32767]", + "System.Net.Sockets": "(,4.3.32767]", + "System.Net.WebHeaderCollection": "(,4.3.32767]", + "System.Net.WebSockets": "(,4.3.32767]", + "System.Net.WebSockets.Client": "(,4.3.32767]", + "System.Numerics.Vectors": "(,5.0.32767]", + "System.ObjectModel": "(,4.3.32767]", + "System.Private.DataContractSerialization": "(,4.3.32767]", + "System.Private.Uri": "(,4.3.32767]", + "System.Reflection": "(,4.3.32767]", + "System.Reflection.DispatchProxy": "(,6.0.32767]", + "System.Reflection.Emit": "(,4.7.32767]", + "System.Reflection.Emit.ILGeneration": "(,4.7.32767]", + "System.Reflection.Emit.Lightweight": "(,4.7.32767]", + "System.Reflection.Extensions": "(,4.3.32767]", + "System.Reflection.Metadata": "(,10.0.32767]", + "System.Reflection.Primitives": "(,4.3.32767]", + "System.Reflection.TypeExtensions": "(,4.3.32767]", + "System.Resources.Reader": "(,4.3.32767]", + "System.Resources.ResourceManager": "(,4.3.32767]", + "System.Resources.Writer": "(,4.3.32767]", + "System.Runtime": "(,4.3.32767]", + "System.Runtime.CompilerServices.Unsafe": "(,7.0.32767]", + "System.Runtime.CompilerServices.VisualC": "(,4.3.32767]", + "System.Runtime.Extensions": "(,4.3.32767]", + "System.Runtime.Handles": "(,4.3.32767]", + "System.Runtime.InteropServices": "(,4.3.32767]", + "System.Runtime.InteropServices.RuntimeInformation": "(,4.3.32767]", + "System.Runtime.Loader": "(,4.3.32767]", + "System.Runtime.Numerics": "(,4.3.32767]", + "System.Runtime.Serialization.Formatters": "(,4.3.32767]", + "System.Runtime.Serialization.Json": "(,4.3.32767]", + "System.Runtime.Serialization.Primitives": "(,4.3.32767]", + "System.Runtime.Serialization.Xml": "(,4.3.32767]", + "System.Security.AccessControl": "(,6.0.32767]", + "System.Security.Claims": "(,4.3.32767]", + "System.Security.Cryptography.Algorithms": "(,4.3.32767]", + "System.Security.Cryptography.Cng": "(,5.0.32767]", + "System.Security.Cryptography.Csp": "(,4.3.32767]", + "System.Security.Cryptography.Encoding": "(,4.3.32767]", + "System.Security.Cryptography.OpenSsl": "(,5.0.32767]", + "System.Security.Cryptography.Primitives": "(,4.3.32767]", + "System.Security.Cryptography.X509Certificates": "(,4.3.32767]", + "System.Security.Cryptography.Xml": "(,10.0.32767]", + "System.Security.Principal": "(,4.3.32767]", + "System.Security.Principal.Windows": "(,5.0.32767]", + "System.Security.SecureString": "(,4.3.32767]", + "System.Text.Encoding": "(,4.3.32767]", + "System.Text.Encoding.CodePages": "(,10.0.32767]", + "System.Text.Encoding.Extensions": "(,4.3.32767]", + "System.Text.Encodings.Web": "(,10.0.32767]", + "System.Text.Json": "(,10.0.32767]", + "System.Text.RegularExpressions": "(,4.3.32767]", + "System.Threading": "(,4.3.32767]", + "System.Threading.AccessControl": "(,10.0.32767]", + "System.Threading.Channels": "(,10.0.32767]", + "System.Threading.Overlapped": "(,4.3.32767]", + "System.Threading.RateLimiting": "(,10.0.32767]", + "System.Threading.Tasks": "(,4.3.32767]", + "System.Threading.Tasks.Dataflow": "(,10.0.32767]", + "System.Threading.Tasks.Extensions": "(,5.0.32767]", + "System.Threading.Tasks.Parallel": "(,4.3.32767]", + "System.Threading.Thread": "(,4.3.32767]", + "System.Threading.ThreadPool": "(,4.3.32767]", + "System.Threading.Timer": "(,4.3.32767]", + "System.ValueTuple": "(,4.5.32767]", + "System.Xml.ReaderWriter": "(,4.3.32767]", + "System.Xml.XDocument": "(,4.3.32767]", + "System.Xml.XmlDocument": "(,4.3.32767]", + "System.Xml.XmlSerializer": "(,4.3.32767]", + "System.Xml.XPath": "(,4.3.32767]", + "System.Xml.XPath.XDocument": "(,5.0.32767]" + } + } + } + } + } +} \ No newline at end of file diff --git a/obj/YarpGateway.csproj.nuget.g.props b/obj/YarpGateway.csproj.nuget.g.props new file mode 100644 index 0000000..afacc71 --- /dev/null +++ b/obj/YarpGateway.csproj.nuget.g.props @@ -0,0 +1,23 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + /Users/movingsam/.nuget/packages/ + /Users/movingsam/.nuget/packages/ + PackageReference + 7.0.0 + + + + + + + + + + + /Users/movingsam/.nuget/packages/microsoft.codeanalysis.analyzers/3.3.4 + + \ No newline at end of file diff --git a/obj/YarpGateway.csproj.nuget.g.targets b/obj/YarpGateway.csproj.nuget.g.targets new file mode 100644 index 0000000..c05559c --- /dev/null +++ b/obj/YarpGateway.csproj.nuget.g.targets @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/obj/project.assets.json b/obj/project.assets.json new file mode 100644 index 0000000..9a1a025 --- /dev/null +++ b/obj/project.assets.json @@ -0,0 +1,3318 @@ +{ + "version": 3, + "targets": { + "net10.0": { + "Humanizer.Core/2.14.1": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Humanizer.dll": { + "related": ".xml" + } + } + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/10.0.0": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.0.1" + }, + "compile": { + "lib/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/7.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.1/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Build.Framework/17.8.3": { + "type": "package", + "compile": { + "ref/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/_._": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.Build.Locator/1.7.8": { + "type": "package", + "compile": { + "lib/net6.0/_._": {} + }, + "runtime": { + "lib/net6.0/Microsoft.Build.Locator.dll": {} + }, + "build": { + "build/_._": {} + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "type": "package", + "build": { + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.props": {}, + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.targets": {} + } + }, + "Microsoft.CodeAnalysis.Common/4.8.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4" + }, + "compile": { + "lib/net7.0/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net7.0/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/net7.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/net7.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/net7.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/net7.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/net7.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/net7.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/net7.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/net7.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/net7.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/net7.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.8.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[4.8.0]" + }, + "compile": { + "lib/net7.0/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/net7.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/net7.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/net7.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/net7.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/net7.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/net7.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/net7.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/net7.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/net7.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/net7.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.8.0": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp": "[4.8.0]", + "Microsoft.CodeAnalysis.Common": "[4.8.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[4.8.0]" + }, + "compile": { + "lib/net7.0/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/net7.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/net7.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/net7.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/net7.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/net7.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/net7.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/net7.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/net7.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/net7.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/net7.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.8.0": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Bcl.AsyncInterfaces": "7.0.0", + "Microsoft.CodeAnalysis.Common": "[4.8.0]", + "System.Composition": "7.0.0" + }, + "compile": { + "lib/net7.0/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/net7.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/net7.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/net7.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/net7.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/net7.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/net7.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/net7.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/net7.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/net7.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/net7.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.MSBuild/4.8.0": { + "type": "package", + "dependencies": { + "Microsoft.Build.Framework": "16.10.0", + "Microsoft.CodeAnalysis.Common": "[4.8.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[4.8.0]" + }, + "compile": { + "lib/net7.0/_._": { + "related": ".pdb;.runtimeconfig.json;.xml" + } + }, + "runtime": { + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll": { + "related": ".pdb;.runtimeconfig.json;.xml" + }, + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll": { + "related": ".BuildHost.pdb;.BuildHost.runtimeconfig.json;.BuildHost.xml;.pdb;.xml" + } + }, + "resource": { + "lib/net7.0/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "cs" + }, + "lib/net7.0/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "de" + }, + "lib/net7.0/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "es" + }, + "lib/net7.0/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "fr" + }, + "lib/net7.0/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "it" + }, + "lib/net7.0/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "ja" + }, + "lib/net7.0/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "ko" + }, + "lib/net7.0/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "pl" + }, + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "pt-BR" + }, + "lib/net7.0/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "ru" + }, + "lib/net7.0/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "tr" + }, + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.EntityFrameworkCore/9.0.0": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "9.0.0", + "Microsoft.EntityFrameworkCore.Analyzers": "9.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {} + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/9.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore.Analyzers/9.0.0": { + "type": "package" + }, + "Microsoft.EntityFrameworkCore.Design/9.0.0": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Build.Framework": "17.8.3", + "Microsoft.Build.Locator": "1.7.8", + "Microsoft.CodeAnalysis.CSharp": "4.8.0", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "4.8.0", + "Microsoft.CodeAnalysis.Workspaces.MSBuild": "4.8.0", + "Microsoft.EntityFrameworkCore.Relational": "9.0.0", + "Microsoft.Extensions.DependencyModel": "9.0.0", + "Mono.TextTemplating": "3.0.0" + }, + "compile": { + "lib/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": { + "related": ".xml" + } + }, + "build": { + "build/net8.0/Microsoft.EntityFrameworkCore.Design.props": {} + } + }, + "Microsoft.EntityFrameworkCore.Relational/9.0.0": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore": "9.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.DependencyModel/9.0.0": { + "type": "package", + "compile": { + "lib/net9.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net9.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/_._": {} + } + }, + "Microsoft.IdentityModel.Abstractions/8.0.1": { + "type": "package", + "compile": { + "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.JsonWebTokens/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.0.1" + }, + "compile": { + "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Logging/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Abstractions": "8.0.1" + }, + "compile": { + "lib/net9.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.Logging.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Protocols/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Tokens": "8.0.1" + }, + "compile": { + "lib/net9.0/Microsoft.IdentityModel.Protocols.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.Protocols.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Protocols": "8.0.1", + "System.IdentityModel.Tokens.Jwt": "8.0.1" + }, + "compile": { + "lib/net9.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll": { + "related": ".xml" + } + } + }, + "Microsoft.IdentityModel.Tokens/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.Logging": "8.0.1" + }, + "compile": { + "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net9.0/Microsoft.IdentityModel.Tokens.dll": { + "related": ".xml" + } + } + }, + "Mono.TextTemplating/3.0.0": { + "type": "package", + "dependencies": { + "System.CodeDom": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": {} + }, + "runtime": { + "lib/net6.0/Mono.TextTemplating.dll": {} + }, + "build": { + "buildTransitive/Mono.TextTemplating.targets": {} + } + }, + "Npgsql/9.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Npgsql.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Npgsql.dll": { + "related": ".xml" + } + } + }, + "Npgsql.EntityFrameworkCore.PostgreSQL/9.0.0": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore": "[9.0.0, 10.0.0)", + "Microsoft.EntityFrameworkCore.Relational": "[9.0.0, 10.0.0)", + "Npgsql": "9.0.0" + }, + "compile": { + "lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": { + "related": ".xml" + } + } + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "type": "package", + "compile": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "related": ".xml" + } + } + }, + "Serilog/4.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Serilog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Serilog.dll": { + "related": ".xml" + } + } + }, + "Serilog.AspNetCore/8.0.0": { + "type": "package", + "dependencies": { + "Serilog": "3.1.1", + "Serilog.Extensions.Hosting": "8.0.0", + "Serilog.Extensions.Logging": "8.0.0", + "Serilog.Formatting.Compact": "2.0.0", + "Serilog.Settings.Configuration": "8.0.0", + "Serilog.Sinks.Console": "5.0.0", + "Serilog.Sinks.Debug": "2.0.0", + "Serilog.Sinks.File": "5.0.0" + }, + "compile": { + "lib/net8.0/Serilog.AspNetCore.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Serilog.AspNetCore.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Serilog.Extensions.Hosting/8.0.0": { + "type": "package", + "dependencies": { + "Serilog": "3.1.1", + "Serilog.Extensions.Logging": "8.0.0" + }, + "compile": { + "lib/net8.0/Serilog.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Serilog.Extensions.Hosting.dll": { + "related": ".xml" + } + } + }, + "Serilog.Extensions.Logging/8.0.0": { + "type": "package", + "dependencies": { + "Serilog": "3.1.1" + }, + "compile": { + "lib/net8.0/Serilog.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Serilog.Extensions.Logging.dll": { + "related": ".xml" + } + } + }, + "Serilog.Formatting.Compact/2.0.0": { + "type": "package", + "dependencies": { + "Serilog": "3.1.0" + }, + "compile": { + "lib/net7.0/Serilog.Formatting.Compact.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net7.0/Serilog.Formatting.Compact.dll": { + "related": ".xml" + } + } + }, + "Serilog.Settings.Configuration/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyModel": "8.0.0", + "Serilog": "3.1.1" + }, + "compile": { + "lib/net8.0/Serilog.Settings.Configuration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Serilog.Settings.Configuration.dll": { + "related": ".xml" + } + } + }, + "Serilog.Sinks.Console/6.0.0": { + "type": "package", + "dependencies": { + "Serilog": "4.0.0" + }, + "compile": { + "lib/net8.0/Serilog.Sinks.Console.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Serilog.Sinks.Console.dll": { + "related": ".xml" + } + } + }, + "Serilog.Sinks.Debug/2.0.0": { + "type": "package", + "dependencies": { + "Serilog": "2.10.0" + }, + "compile": { + "lib/netstandard2.1/Serilog.Sinks.Debug.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Serilog.Sinks.Debug.dll": { + "related": ".xml" + } + } + }, + "Serilog.Sinks.File/6.0.0": { + "type": "package", + "dependencies": { + "Serilog": "4.0.0" + }, + "compile": { + "lib/net8.0/Serilog.Sinks.File.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Serilog.Sinks.File.dll": { + "related": ".xml" + } + } + }, + "StackExchange.Redis/2.8.16": { + "type": "package", + "dependencies": { + "Pipelines.Sockets.Unofficial": "2.2.8" + }, + "compile": { + "lib/net6.0/StackExchange.Redis.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/StackExchange.Redis.dll": { + "related": ".xml" + } + } + }, + "System.CodeDom/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.CodeDom.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition/7.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "7.0.0", + "System.Composition.Convention": "7.0.0", + "System.Composition.Hosting": "7.0.0", + "System.Composition.Runtime": "7.0.0", + "System.Composition.TypedParts": "7.0.0" + }, + "compile": { + "lib/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Composition.AttributedModel/7.0.0": { + "type": "package", + "compile": { + "lib/net7.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net7.0/System.Composition.AttributedModel.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Composition.Convention/7.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "7.0.0" + }, + "compile": { + "lib/net7.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net7.0/System.Composition.Convention.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Composition.Hosting/7.0.0": { + "type": "package", + "dependencies": { + "System.Composition.Runtime": "7.0.0" + }, + "compile": { + "lib/net7.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net7.0/System.Composition.Hosting.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Composition.Runtime/7.0.0": { + "type": "package", + "compile": { + "lib/net7.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net7.0/System.Composition.Runtime.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Composition.TypedParts/7.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "7.0.0", + "System.Composition.Hosting": "7.0.0", + "System.Composition.Runtime": "7.0.0" + }, + "compile": { + "lib/net7.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net7.0/System.Composition.TypedParts.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.IdentityModel.Tokens.Jwt/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.IdentityModel.JsonWebTokens": "8.0.1", + "Microsoft.IdentityModel.Tokens": "8.0.1" + }, + "compile": { + "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll": { + "related": ".xml" + } + } + }, + "System.IO.Hashing/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.IO.Hashing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Hashing.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Yarp.ReverseProxy/2.2.0": { + "type": "package", + "dependencies": { + "System.IO.Hashing": "8.0.0" + }, + "compile": { + "lib/net8.0/Yarp.ReverseProxy.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Yarp.ReverseProxy.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + } + } + }, + "libraries": { + "Humanizer.Core/2.14.1": { + "sha512": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==", + "type": "package", + "path": "humanizer.core/2.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.2.14.1.nupkg.sha512", + "humanizer.core.nuspec", + "lib/net6.0/Humanizer.dll", + "lib/net6.0/Humanizer.xml", + "lib/netstandard1.0/Humanizer.dll", + "lib/netstandard1.0/Humanizer.xml", + "lib/netstandard2.0/Humanizer.dll", + "lib/netstandard2.0/Humanizer.xml", + "logo.png" + ] + }, + "Microsoft.AspNetCore.Authentication.JwtBearer/10.0.0": { + "sha512": "0BgDfT1GoZnzjJOBwx5vFMK5JtqsTEas9pCEwd1/KKxNUAqFmreN60WeUoF+CsmSd9tOQuqWedvdBo/QqHuNTQ==", + "type": "package", + "path": "microsoft.aspnetcore.authentication.jwtbearer/10.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "lib/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.dll", + "lib/net10.0/Microsoft.AspNetCore.Authentication.JwtBearer.xml", + "microsoft.aspnetcore.authentication.jwtbearer.10.0.0.nupkg.sha512", + "microsoft.aspnetcore.authentication.jwtbearer.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/7.0.0": { + "sha512": "3aeMZ1N0lJoSyzqiP03hqemtb1BijhsJADdobn/4nsMJ8V1H+CrpuduUe4hlRdx+ikBQju1VGjMD1GJ3Sk05Eg==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.7.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Build.Framework/17.8.3": { + "sha512": "NrQZJW8TlKVPx72yltGb8SVz3P5mNRk9fNiD/ao8jRSk48WqIIdCn99q4IjlVmPcruuQ+yLdjNQLL8Rb4c916g==", + "type": "package", + "path": "microsoft.build.framework/17.8.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "MSBuild-NuGet-Icon.png", + "README.md", + "lib/net472/Microsoft.Build.Framework.dll", + "lib/net472/Microsoft.Build.Framework.pdb", + "lib/net472/Microsoft.Build.Framework.xml", + "lib/net8.0/Microsoft.Build.Framework.dll", + "lib/net8.0/Microsoft.Build.Framework.pdb", + "lib/net8.0/Microsoft.Build.Framework.xml", + "microsoft.build.framework.17.8.3.nupkg.sha512", + "microsoft.build.framework.nuspec", + "notices/THIRDPARTYNOTICES.txt", + "ref/net472/Microsoft.Build.Framework.dll", + "ref/net472/Microsoft.Build.Framework.xml", + "ref/net8.0/Microsoft.Build.Framework.dll", + "ref/net8.0/Microsoft.Build.Framework.xml", + "ref/netstandard2.0/Microsoft.Build.Framework.dll", + "ref/netstandard2.0/Microsoft.Build.Framework.xml" + ] + }, + "Microsoft.Build.Locator/1.7.8": { + "sha512": "sPy10x527Ph16S2u0yGME4S6ohBKJ69WfjeGG/bvELYeZVmJdKjxgnlL8cJJJLGV/cZIRqSfB12UDB8ICakOog==", + "type": "package", + "path": "microsoft.build.locator/1.7.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "MSBuild-NuGet-Icon.png", + "build/Microsoft.Build.Locator.props", + "build/Microsoft.Build.Locator.targets", + "lib/net46/Microsoft.Build.Locator.dll", + "lib/net6.0/Microsoft.Build.Locator.dll", + "microsoft.build.locator.1.7.8.nupkg.sha512", + "microsoft.build.locator.nuspec" + ] + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.4": { + "sha512": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==", + "type": "package", + "path": "microsoft.codeanalysis.analyzers/3.3.4", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.txt", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", + "analyzers/dotnet/cs/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "analyzers/dotnet/vb/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.props", + "buildTransitive/Microsoft.CodeAnalysis.Analyzers.targets", + "buildTransitive/config/analysislevel_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevel_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_all.globalconfig", + "buildTransitive/config/analysislevel_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_default.globalconfig", + "buildTransitive/config/analysislevel_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_none.globalconfig", + "buildTransitive/config/analysislevel_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_all.globalconfig", + "buildTransitive/config/analysislevel_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_default.globalconfig", + "buildTransitive/config/analysislevel_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevel_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_none.globalconfig", + "buildTransitive/config/analysislevel_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevel_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevel_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_all.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_default.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_none.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelcorrectness_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_all.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_default.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_none.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevellibrary_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscompatibility_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysiscorrectness_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdesign_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisdocumentation_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysislocalization_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisperformance_4_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_all.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_all_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_default.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_default_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_minimum.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_minimum_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_none.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_none_warnaserror.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_recommended.globalconfig", + "buildTransitive/config/analysislevelmicrosoftcodeanalysisreleasetracking_4_3_recommended_warnaserror.globalconfig", + "documentation/Analyzer Configuration.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.sarif", + "editorconfig/AllRulesDefault/.editorconfig", + "editorconfig/AllRulesDisabled/.editorconfig", + "editorconfig/AllRulesEnabled/.editorconfig", + "editorconfig/CorrectnessRulesDefault/.editorconfig", + "editorconfig/CorrectnessRulesEnabled/.editorconfig", + "editorconfig/DataflowRulesDefault/.editorconfig", + "editorconfig/DataflowRulesEnabled/.editorconfig", + "editorconfig/LibraryRulesDefault/.editorconfig", + "editorconfig/LibraryRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled/.editorconfig", + "editorconfig/PortedFromFxCopRulesDefault/.editorconfig", + "editorconfig/PortedFromFxCopRulesEnabled/.editorconfig", + "microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512", + "microsoft.codeanalysis.analyzers.nuspec", + "rulesets/AllRulesDefault.ruleset", + "rulesets/AllRulesDisabled.ruleset", + "rulesets/AllRulesEnabled.ruleset", + "rulesets/CorrectnessRulesDefault.ruleset", + "rulesets/CorrectnessRulesEnabled.ruleset", + "rulesets/DataflowRulesDefault.ruleset", + "rulesets/DataflowRulesEnabled.ruleset", + "rulesets/LibraryRulesDefault.ruleset", + "rulesets/LibraryRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled.ruleset", + "rulesets/PortedFromFxCopRulesDefault.ruleset", + "rulesets/PortedFromFxCopRulesEnabled.ruleset", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, + "Microsoft.CodeAnalysis.Common/4.8.0": { + "sha512": "/jR+e/9aT+BApoQJABlVCKnnggGQbvGh7BKq2/wI1LamxC+LbzhcLj4Vj7gXCofl1n4E521YfF9w0WcASGg/KA==", + "type": "package", + "path": "microsoft.codeanalysis.common/4.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/net6.0/Microsoft.CodeAnalysis.dll", + "lib/net6.0/Microsoft.CodeAnalysis.pdb", + "lib/net6.0/Microsoft.CodeAnalysis.xml", + "lib/net6.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/Microsoft.CodeAnalysis.dll", + "lib/net7.0/Microsoft.CodeAnalysis.pdb", + "lib/net7.0/Microsoft.CodeAnalysis.xml", + "lib/net7.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "microsoft.codeanalysis.common.4.8.0.nupkg.sha512", + "microsoft.codeanalysis.common.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp/4.8.0": { + "sha512": "+3+qfdb/aaGD8PZRCrsdobbzGs1m9u119SkkJt8e/mk3xLJz/udLtS2T6nY27OTXxBBw10HzAbC8Z9w08VyP/g==", + "type": "package", + "path": "microsoft.codeanalysis.csharp/4.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/net6.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/net6.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/net6.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/net6.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/net7.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "microsoft.codeanalysis.csharp.4.8.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.8.0": { + "sha512": "3amm4tq4Lo8/BGvg9p3BJh3S9nKq2wqCXfS7138i69TUpo/bD+XvD0hNurpEBtcNZhi1FyutiomKJqVF39ugYA==", + "type": "package", + "path": "microsoft.codeanalysis.csharp.workspaces/4.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/net6.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/net6.0/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/net6.0/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/net6.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/net7.0/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/net7.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "microsoft.codeanalysis.csharp.workspaces.4.8.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.workspaces.nuspec" + ] + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.8.0": { + "sha512": "LXyV+MJKsKRu3FGJA3OmSk40OUIa/dQCFLOnm5X8MNcujx7hzGu8o+zjXlb/cy5xUdZK2UKYb9YaQ2E8m9QehQ==", + "type": "package", + "path": "microsoft.codeanalysis.workspaces.common/4.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/net6.0/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/net6.0/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/net6.0/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/net6.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/net7.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "microsoft.codeanalysis.workspaces.common.4.8.0.nupkg.sha512", + "microsoft.codeanalysis.workspaces.common.nuspec" + ] + }, + "Microsoft.CodeAnalysis.Workspaces.MSBuild/4.8.0": { + "sha512": "IEYreI82QZKklp54yPHxZNG9EKSK6nHEkeuf+0Asie9llgS1gp0V1hw7ODG+QyoB7MuAnNQHmeV1Per/ECpv6A==", + "type": "package", + "path": "microsoft.codeanalysis.workspaces.msbuild/4.8.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/net472/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.exe", + "lib/net472/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.pdb", + "lib/net472/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.xml", + "lib/net472/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll", + "lib/net472/Microsoft.CodeAnalysis.Workspaces.MSBuild.pdb", + "lib/net472/Microsoft.CodeAnalysis.Workspaces.MSBuild.xml", + "lib/net472/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net472/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll", + "lib/net6.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.pdb", + "lib/net6.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.runtimeconfig.json", + "lib/net6.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.xml", + "lib/net6.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll", + "lib/net6.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.pdb", + "lib/net6.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.xml", + "lib/net6.0/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net6.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.dll", + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.pdb", + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.runtimeconfig.json", + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.xml", + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.dll", + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.pdb", + "lib/net7.0/Microsoft.CodeAnalysis.Workspaces.MSBuild.xml", + "lib/net7.0/cs/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/de/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/es/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/fr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/it/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/ja/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/ko/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/pl/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/ru/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/tr/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "lib/net7.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.MSBuild.BuildHost.resources.dll", + "microsoft.codeanalysis.workspaces.msbuild.4.8.0.nupkg.sha512", + "microsoft.codeanalysis.workspaces.msbuild.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore/9.0.0": { + "sha512": "wpG+nfnfDAw87R3ovAsUmjr3MZ4tYXf6bFqEPVAIKE6IfPml3DS//iX0DBnf8kWn5ZHSO5oi1m4d/Jf+1LifJQ==", + "type": "package", + "path": "microsoft.entityframeworkcore/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props", + "lib/net8.0/Microsoft.EntityFrameworkCore.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.xml", + "microsoft.entityframeworkcore.9.0.0.nupkg.sha512", + "microsoft.entityframeworkcore.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Abstractions/9.0.0": { + "sha512": "fnmifFL8KaA4ZNLCVgfjCWhZUFxkrDInx5hR4qG7Q8IEaSiy/6VOSRFyx55oH7MV4y7wM3J3EE90nSpcVBI44Q==", + "type": "package", + "path": "microsoft.entityframeworkcore.abstractions/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml", + "microsoft.entityframeworkcore.abstractions.9.0.0.nupkg.sha512", + "microsoft.entityframeworkcore.abstractions.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Analyzers/9.0.0": { + "sha512": "Qje+DzXJOKiXF72SL0XxNlDtTkvWWvmwknuZtFahY5hIQpRKO59qnGuERIQ3qlzuq5x4bAJ8WMbgU5DLhBgeOQ==", + "type": "package", + "path": "microsoft.entityframeworkcore.analyzers/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", + "docs/PACKAGE.md", + "microsoft.entityframeworkcore.analyzers.9.0.0.nupkg.sha512", + "microsoft.entityframeworkcore.analyzers.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Design/9.0.0": { + "sha512": "Pqo8I+yHJ3VQrAoY0hiSncf+5P7gN/RkNilK5e+/K/yKh+yAWxdUAI6t0TG26a9VPlCa9FhyklzyFvRyj3YG9A==", + "type": "package", + "path": "microsoft.entityframeworkcore.design/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "build/net8.0/Microsoft.EntityFrameworkCore.Design.props", + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.xml", + "microsoft.entityframeworkcore.design.9.0.0.nupkg.sha512", + "microsoft.entityframeworkcore.design.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Relational/9.0.0": { + "sha512": "j+msw6fWgAE9M3Q/5B9Uhv7pdAdAQUvFPJAiBJmoy+OXvehVbfbCE8ftMAa51Uo2ZeiqVnHShhnv4Y4UJJmUzA==", + "type": "package", + "path": "microsoft.entityframeworkcore.relational/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml", + "microsoft.entityframeworkcore.relational.9.0.0.nupkg.sha512", + "microsoft.entityframeworkcore.relational.nuspec" + ] + }, + "Microsoft.Extensions.DependencyModel/9.0.0": { + "sha512": "saxr2XzwgDU77LaQfYFXmddEDRUKHF4DaGMZkNB3qjdVSZlax3//dGJagJkKrGMIPNZs2jVFXITyCCR6UHJNdA==", + "type": "package", + "path": "microsoft.extensions.dependencymodel/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyModel.targets", + "buildTransitive/net462/_._", + "buildTransitive/net8.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyModel.targets", + "lib/net462/Microsoft.Extensions.DependencyModel.dll", + "lib/net462/Microsoft.Extensions.DependencyModel.xml", + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net8.0/Microsoft.Extensions.DependencyModel.xml", + "lib/net9.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net9.0/Microsoft.Extensions.DependencyModel.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.xml", + "microsoft.extensions.dependencymodel.9.0.0.nupkg.sha512", + "microsoft.extensions.dependencymodel.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.IdentityModel.Abstractions/8.0.1": { + "sha512": "OtlIWcyX01olfdevPKZdIPfBEvbcioDyBiE/Z2lHsopsMD7twcKtlN9kMevHmI5IIPhFpfwCIiR6qHQz1WHUIw==", + "type": "package", + "path": "microsoft.identitymodel.abstractions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net462/Microsoft.IdentityModel.Abstractions.dll", + "lib/net462/Microsoft.IdentityModel.Abstractions.xml", + "lib/net472/Microsoft.IdentityModel.Abstractions.dll", + "lib/net472/Microsoft.IdentityModel.Abstractions.xml", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net6.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net8.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/net9.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/net9.0/Microsoft.IdentityModel.Abstractions.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml", + "microsoft.identitymodel.abstractions.8.0.1.nupkg.sha512", + "microsoft.identitymodel.abstractions.nuspec" + ] + }, + "Microsoft.IdentityModel.JsonWebTokens/8.0.1": { + "sha512": "s6++gF9x0rQApQzOBbSyp4jUaAlwm+DroKfL8gdOHxs83k8SJfUXhuc46rDB3rNXBQ1MVRxqKUrqFhO/M0E97g==", + "type": "package", + "path": "microsoft.identitymodel.jsonwebtokens/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net462/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net472/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net6.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net8.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/net9.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml", + "microsoft.identitymodel.jsonwebtokens.8.0.1.nupkg.sha512", + "microsoft.identitymodel.jsonwebtokens.nuspec" + ] + }, + "Microsoft.IdentityModel.Logging/8.0.1": { + "sha512": "UCPF2exZqBXe7v/6sGNiM6zCQOUXXQ9+v5VTb9gPB8ZSUPnX53BxlN78v2jsbIvK9Dq4GovQxo23x8JgWvm/Qg==", + "type": "package", + "path": "microsoft.identitymodel.logging/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net462/Microsoft.IdentityModel.Logging.dll", + "lib/net462/Microsoft.IdentityModel.Logging.xml", + "lib/net472/Microsoft.IdentityModel.Logging.dll", + "lib/net472/Microsoft.IdentityModel.Logging.xml", + "lib/net6.0/Microsoft.IdentityModel.Logging.dll", + "lib/net6.0/Microsoft.IdentityModel.Logging.xml", + "lib/net8.0/Microsoft.IdentityModel.Logging.dll", + "lib/net8.0/Microsoft.IdentityModel.Logging.xml", + "lib/net9.0/Microsoft.IdentityModel.Logging.dll", + "lib/net9.0/Microsoft.IdentityModel.Logging.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml", + "microsoft.identitymodel.logging.8.0.1.nupkg.sha512", + "microsoft.identitymodel.logging.nuspec" + ] + }, + "Microsoft.IdentityModel.Protocols/8.0.1": { + "sha512": "uA2vpKqU3I2mBBEaeJAWPTjT9v1TZrGWKdgK6G5qJd03CLx83kdiqO9cmiK8/n1erkHzFBwU/RphP83aAe3i3g==", + "type": "package", + "path": "microsoft.identitymodel.protocols/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net462/Microsoft.IdentityModel.Protocols.dll", + "lib/net462/Microsoft.IdentityModel.Protocols.xml", + "lib/net472/Microsoft.IdentityModel.Protocols.dll", + "lib/net472/Microsoft.IdentityModel.Protocols.xml", + "lib/net6.0/Microsoft.IdentityModel.Protocols.dll", + "lib/net6.0/Microsoft.IdentityModel.Protocols.xml", + "lib/net8.0/Microsoft.IdentityModel.Protocols.dll", + "lib/net8.0/Microsoft.IdentityModel.Protocols.xml", + "lib/net9.0/Microsoft.IdentityModel.Protocols.dll", + "lib/net9.0/Microsoft.IdentityModel.Protocols.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.xml", + "microsoft.identitymodel.protocols.8.0.1.nupkg.sha512", + "microsoft.identitymodel.protocols.nuspec" + ] + }, + "Microsoft.IdentityModel.Protocols.OpenIdConnect/8.0.1": { + "sha512": "AQDbfpL+yzuuGhO/mQhKNsp44pm5Jv8/BI4KiFXR7beVGZoSH35zMV3PrmcfvSTsyI6qrcR898NzUauD6SRigg==", + "type": "package", + "path": "microsoft.identitymodel.protocols.openidconnect/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net462/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net462/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net472/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net472/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net6.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net6.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net8.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/net9.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/net9.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", + "microsoft.identitymodel.protocols.openidconnect.8.0.1.nupkg.sha512", + "microsoft.identitymodel.protocols.openidconnect.nuspec" + ] + }, + "Microsoft.IdentityModel.Tokens/8.0.1": { + "sha512": "kDimB6Dkd3nkW2oZPDkMkVHfQt3IDqO5gL0oa8WVy3OP4uE8Ij+8TXnqg9TOd9ufjsY3IDiGz7pCUbnfL18tjg==", + "type": "package", + "path": "microsoft.identitymodel.tokens/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net462/Microsoft.IdentityModel.Tokens.dll", + "lib/net462/Microsoft.IdentityModel.Tokens.xml", + "lib/net472/Microsoft.IdentityModel.Tokens.dll", + "lib/net472/Microsoft.IdentityModel.Tokens.xml", + "lib/net6.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net6.0/Microsoft.IdentityModel.Tokens.xml", + "lib/net8.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net8.0/Microsoft.IdentityModel.Tokens.xml", + "lib/net9.0/Microsoft.IdentityModel.Tokens.dll", + "lib/net9.0/Microsoft.IdentityModel.Tokens.xml", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll", + "lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml", + "microsoft.identitymodel.tokens.8.0.1.nupkg.sha512", + "microsoft.identitymodel.tokens.nuspec" + ] + }, + "Mono.TextTemplating/3.0.0": { + "sha512": "YqueG52R/Xej4VVbKuRIodjiAhV0HR/XVbLbNrJhCZnzjnSjgMJ/dCdV0akQQxavX6hp/LC6rqLGLcXeQYU7XA==", + "type": "package", + "path": "mono.texttemplating/3.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.txt/LICENSE", + "buildTransitive/Mono.TextTemplating.targets", + "lib/net472/Mono.TextTemplating.dll", + "lib/net6.0/Mono.TextTemplating.dll", + "lib/netstandard2.0/Mono.TextTemplating.dll", + "mono.texttemplating.3.0.0.nupkg.sha512", + "mono.texttemplating.nuspec", + "readme.md" + ] + }, + "Npgsql/9.0.0": { + "sha512": "zu1nCRt0gWP/GR0reYgg0Bl5o8qyNV7mVAgzAbVLRiAd1CYXcf/9nrubPH0mt93u8iGTKmYqWaLVECEAcE6IfQ==", + "type": "package", + "path": "npgsql/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net6.0/Npgsql.dll", + "lib/net6.0/Npgsql.xml", + "lib/net8.0/Npgsql.dll", + "lib/net8.0/Npgsql.xml", + "npgsql.9.0.0.nupkg.sha512", + "npgsql.nuspec", + "postgresql.png" + ] + }, + "Npgsql.EntityFrameworkCore.PostgreSQL/9.0.0": { + "sha512": "ObngKFRLMBAeMqQzK7SC0Q6WZtWw0imPmEkVPo12yLVF3fioz2TN+w0mhNMJ5cVd/sLB2u+jei0bmA9sDMtkMw==", + "type": "package", + "path": "npgsql.entityframeworkcore.postgresql/9.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll", + "lib/net8.0/Npgsql.EntityFrameworkCore.PostgreSQL.xml", + "npgsql.entityframeworkcore.postgresql.9.0.0.nupkg.sha512", + "npgsql.entityframeworkcore.postgresql.nuspec", + "postgresql.png" + ] + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "sha512": "zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", + "type": "package", + "path": "pipelines.sockets.unofficial/2.2.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Pipelines.Sockets.Unofficial.dll", + "lib/net461/Pipelines.Sockets.Unofficial.xml", + "lib/net472/Pipelines.Sockets.Unofficial.dll", + "lib/net472/Pipelines.Sockets.Unofficial.xml", + "lib/net5.0/Pipelines.Sockets.Unofficial.dll", + "lib/net5.0/Pipelines.Sockets.Unofficial.xml", + "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.dll", + "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.xml", + "lib/netstandard2.0/Pipelines.Sockets.Unofficial.dll", + "lib/netstandard2.0/Pipelines.Sockets.Unofficial.xml", + "lib/netstandard2.1/Pipelines.Sockets.Unofficial.dll", + "lib/netstandard2.1/Pipelines.Sockets.Unofficial.xml", + "pipelines.sockets.unofficial.2.2.8.nupkg.sha512", + "pipelines.sockets.unofficial.nuspec" + ] + }, + "Serilog/4.0.0": { + "sha512": "2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==", + "type": "package", + "path": "serilog/4.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net462/Serilog.dll", + "lib/net462/Serilog.xml", + "lib/net471/Serilog.dll", + "lib/net471/Serilog.xml", + "lib/net6.0/Serilog.dll", + "lib/net6.0/Serilog.xml", + "lib/net8.0/Serilog.dll", + "lib/net8.0/Serilog.xml", + "lib/netstandard2.0/Serilog.dll", + "lib/netstandard2.0/Serilog.xml", + "serilog.4.0.0.nupkg.sha512", + "serilog.nuspec" + ] + }, + "Serilog.AspNetCore/8.0.0": { + "sha512": "FAjtKPZ4IzqFQBqZKPv6evcXK/F0ls7RoXI/62Pnx2igkDZ6nZ/jn/C/FxVATqQbEQvtqP+KViWYIe4NZIHa2w==", + "type": "package", + "path": "serilog.aspnetcore/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net462/Serilog.AspNetCore.dll", + "lib/net462/Serilog.AspNetCore.xml", + "lib/net6.0/Serilog.AspNetCore.dll", + "lib/net6.0/Serilog.AspNetCore.xml", + "lib/net7.0/Serilog.AspNetCore.dll", + "lib/net7.0/Serilog.AspNetCore.xml", + "lib/net8.0/Serilog.AspNetCore.dll", + "lib/net8.0/Serilog.AspNetCore.xml", + "lib/netstandard2.0/Serilog.AspNetCore.dll", + "lib/netstandard2.0/Serilog.AspNetCore.xml", + "serilog.aspnetcore.8.0.0.nupkg.sha512", + "serilog.aspnetcore.nuspec" + ] + }, + "Serilog.Extensions.Hosting/8.0.0": { + "sha512": "db0OcbWeSCvYQkHWu6n0v40N4kKaTAXNjlM3BKvcbwvNzYphQFcBR+36eQ/7hMMwOkJvAyLC2a9/jNdUL5NjtQ==", + "type": "package", + "path": "serilog.extensions.hosting/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net462/Serilog.Extensions.Hosting.dll", + "lib/net462/Serilog.Extensions.Hosting.xml", + "lib/net6.0/Serilog.Extensions.Hosting.dll", + "lib/net6.0/Serilog.Extensions.Hosting.xml", + "lib/net7.0/Serilog.Extensions.Hosting.dll", + "lib/net7.0/Serilog.Extensions.Hosting.xml", + "lib/net8.0/Serilog.Extensions.Hosting.dll", + "lib/net8.0/Serilog.Extensions.Hosting.xml", + "lib/netstandard2.0/Serilog.Extensions.Hosting.dll", + "lib/netstandard2.0/Serilog.Extensions.Hosting.xml", + "serilog.extensions.hosting.8.0.0.nupkg.sha512", + "serilog.extensions.hosting.nuspec" + ] + }, + "Serilog.Extensions.Logging/8.0.0": { + "sha512": "YEAMWu1UnWgf1c1KP85l1SgXGfiVo0Rz6x08pCiPOIBt2Qe18tcZLvdBUuV5o1QHvrs8FAry9wTIhgBRtjIlEg==", + "type": "package", + "path": "serilog.extensions.logging/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/Serilog.Extensions.Logging.dll", + "lib/net462/Serilog.Extensions.Logging.xml", + "lib/net6.0/Serilog.Extensions.Logging.dll", + "lib/net6.0/Serilog.Extensions.Logging.xml", + "lib/net7.0/Serilog.Extensions.Logging.dll", + "lib/net7.0/Serilog.Extensions.Logging.xml", + "lib/net8.0/Serilog.Extensions.Logging.dll", + "lib/net8.0/Serilog.Extensions.Logging.xml", + "lib/netstandard2.0/Serilog.Extensions.Logging.dll", + "lib/netstandard2.0/Serilog.Extensions.Logging.xml", + "lib/netstandard2.1/Serilog.Extensions.Logging.dll", + "lib/netstandard2.1/Serilog.Extensions.Logging.xml", + "serilog-extension-nuget.png", + "serilog.extensions.logging.8.0.0.nupkg.sha512", + "serilog.extensions.logging.nuspec" + ] + }, + "Serilog.Formatting.Compact/2.0.0": { + "sha512": "ob6z3ikzFM3D1xalhFuBIK1IOWf+XrQq+H4KeH4VqBcPpNcmUgZlRQ2h3Q7wvthpdZBBoY86qZOI2LCXNaLlNA==", + "type": "package", + "path": "serilog.formatting.compact/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/Serilog.Formatting.Compact.dll", + "lib/net462/Serilog.Formatting.Compact.xml", + "lib/net471/Serilog.Formatting.Compact.dll", + "lib/net471/Serilog.Formatting.Compact.xml", + "lib/net6.0/Serilog.Formatting.Compact.dll", + "lib/net6.0/Serilog.Formatting.Compact.xml", + "lib/net7.0/Serilog.Formatting.Compact.dll", + "lib/net7.0/Serilog.Formatting.Compact.xml", + "lib/netstandard2.0/Serilog.Formatting.Compact.dll", + "lib/netstandard2.0/Serilog.Formatting.Compact.xml", + "lib/netstandard2.1/Serilog.Formatting.Compact.dll", + "lib/netstandard2.1/Serilog.Formatting.Compact.xml", + "serilog-extension-nuget.png", + "serilog.formatting.compact.2.0.0.nupkg.sha512", + "serilog.formatting.compact.nuspec" + ] + }, + "Serilog.Settings.Configuration/8.0.0": { + "sha512": "nR0iL5HwKj5v6ULo3/zpP8NMcq9E2pxYA6XKTSWCbugVs4YqPyvaqaKOY+OMpPivKp7zMEpax2UKHnDodbRB0Q==", + "type": "package", + "path": "serilog.settings.configuration/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net462/Serilog.Settings.Configuration.dll", + "lib/net462/Serilog.Settings.Configuration.xml", + "lib/net6.0/Serilog.Settings.Configuration.dll", + "lib/net6.0/Serilog.Settings.Configuration.xml", + "lib/net7.0/Serilog.Settings.Configuration.dll", + "lib/net7.0/Serilog.Settings.Configuration.xml", + "lib/net8.0/Serilog.Settings.Configuration.dll", + "lib/net8.0/Serilog.Settings.Configuration.xml", + "lib/netstandard2.0/Serilog.Settings.Configuration.dll", + "lib/netstandard2.0/Serilog.Settings.Configuration.xml", + "serilog.settings.configuration.8.0.0.nupkg.sha512", + "serilog.settings.configuration.nuspec" + ] + }, + "Serilog.Sinks.Console/6.0.0": { + "sha512": "fQGWqVMClCP2yEyTXPIinSr5c+CBGUvBybPxjAGcf7ctDhadFhrQw03Mv8rJ07/wR5PDfFjewf2LimvXCDzpbA==", + "type": "package", + "path": "serilog.sinks.console/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net462/Serilog.Sinks.Console.dll", + "lib/net462/Serilog.Sinks.Console.xml", + "lib/net471/Serilog.Sinks.Console.dll", + "lib/net471/Serilog.Sinks.Console.xml", + "lib/net6.0/Serilog.Sinks.Console.dll", + "lib/net6.0/Serilog.Sinks.Console.xml", + "lib/net8.0/Serilog.Sinks.Console.dll", + "lib/net8.0/Serilog.Sinks.Console.xml", + "lib/netstandard2.0/Serilog.Sinks.Console.dll", + "lib/netstandard2.0/Serilog.Sinks.Console.xml", + "serilog.sinks.console.6.0.0.nupkg.sha512", + "serilog.sinks.console.nuspec" + ] + }, + "Serilog.Sinks.Debug/2.0.0": { + "sha512": "Y6g3OBJ4JzTyyw16fDqtFcQ41qQAydnEvEqmXjhwhgjsnG/FaJ8GUqF5ldsC/bVkK8KYmqrPhDO+tm4dF6xx4A==", + "type": "package", + "path": "serilog.sinks.debug/2.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "lib/net45/Serilog.Sinks.Debug.dll", + "lib/net45/Serilog.Sinks.Debug.xml", + "lib/net46/Serilog.Sinks.Debug.dll", + "lib/net46/Serilog.Sinks.Debug.xml", + "lib/netstandard1.0/Serilog.Sinks.Debug.dll", + "lib/netstandard1.0/Serilog.Sinks.Debug.xml", + "lib/netstandard2.0/Serilog.Sinks.Debug.dll", + "lib/netstandard2.0/Serilog.Sinks.Debug.xml", + "lib/netstandard2.1/Serilog.Sinks.Debug.dll", + "lib/netstandard2.1/Serilog.Sinks.Debug.xml", + "serilog.sinks.debug.2.0.0.nupkg.sha512", + "serilog.sinks.debug.nuspec" + ] + }, + "Serilog.Sinks.File/6.0.0": { + "sha512": "lxjg89Y8gJMmFxVkbZ+qDgjl+T4yC5F7WSLTvA+5q0R04tfKVLRL/EHpYoJ/MEQd2EeCKDuylBIVnAYMotmh2A==", + "type": "package", + "path": "serilog.sinks.file/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/Serilog.Sinks.File.dll", + "lib/net462/Serilog.Sinks.File.xml", + "lib/net471/Serilog.Sinks.File.dll", + "lib/net471/Serilog.Sinks.File.xml", + "lib/net6.0/Serilog.Sinks.File.dll", + "lib/net6.0/Serilog.Sinks.File.xml", + "lib/net8.0/Serilog.Sinks.File.dll", + "lib/net8.0/Serilog.Sinks.File.xml", + "lib/netstandard2.0/Serilog.Sinks.File.dll", + "lib/netstandard2.0/Serilog.Sinks.File.xml", + "serilog-sink-nuget.png", + "serilog.sinks.file.6.0.0.nupkg.sha512", + "serilog.sinks.file.nuspec" + ] + }, + "StackExchange.Redis/2.8.16": { + "sha512": "WaoulkOqOC9jHepca3JZKFTqndCWab5uYS7qCzmiQDlrTkFaDN7eLSlEfHycBxipRnQY9ppZM7QSsWAwUEGblw==", + "type": "package", + "path": "stackexchange.redis/2.8.16", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/StackExchange.Redis.dll", + "lib/net461/StackExchange.Redis.xml", + "lib/net472/StackExchange.Redis.dll", + "lib/net472/StackExchange.Redis.xml", + "lib/net6.0/StackExchange.Redis.dll", + "lib/net6.0/StackExchange.Redis.xml", + "lib/netcoreapp3.1/StackExchange.Redis.dll", + "lib/netcoreapp3.1/StackExchange.Redis.xml", + "lib/netstandard2.0/StackExchange.Redis.dll", + "lib/netstandard2.0/StackExchange.Redis.xml", + "stackexchange.redis.2.8.16.nupkg.sha512", + "stackexchange.redis.nuspec" + ] + }, + "System.CodeDom/6.0.0": { + "sha512": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA==", + "type": "package", + "path": "system.codedom/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.CodeDom.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.CodeDom.dll", + "lib/net461/System.CodeDom.xml", + "lib/net6.0/System.CodeDom.dll", + "lib/net6.0/System.CodeDom.xml", + "lib/netstandard2.0/System.CodeDom.dll", + "lib/netstandard2.0/System.CodeDom.xml", + "system.codedom.6.0.0.nupkg.sha512", + "system.codedom.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition/7.0.0": { + "sha512": "tRwgcAkDd85O8Aq6zHDANzQaq380cek9lbMg5Qma46u5BZXq/G+XvIYmu+UI+BIIZ9zssXLYrkTykEqxxvhcmg==", + "type": "package", + "path": "system.composition/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Composition.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Composition.targets", + "lib/net461/_._", + "lib/netcoreapp2.0/_._", + "lib/netstandard2.0/_._", + "system.composition.7.0.0.nupkg.sha512", + "system.composition.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.AttributedModel/7.0.0": { + "sha512": "2QzClqjElKxgI1jK1Jztnq44/8DmSuTSGGahXqQ4TdEV0h9s2KikQZIgcEqVzR7OuWDFPGLHIprBJGQEPr8fAQ==", + "type": "package", + "path": "system.composition.attributedmodel/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Composition.AttributedModel.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Composition.AttributedModel.targets", + "lib/net462/System.Composition.AttributedModel.dll", + "lib/net462/System.Composition.AttributedModel.xml", + "lib/net6.0/System.Composition.AttributedModel.dll", + "lib/net6.0/System.Composition.AttributedModel.xml", + "lib/net7.0/System.Composition.AttributedModel.dll", + "lib/net7.0/System.Composition.AttributedModel.xml", + "lib/netstandard2.0/System.Composition.AttributedModel.dll", + "lib/netstandard2.0/System.Composition.AttributedModel.xml", + "system.composition.attributedmodel.7.0.0.nupkg.sha512", + "system.composition.attributedmodel.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Convention/7.0.0": { + "sha512": "IMhTlpCs4HmlD8B+J8/kWfwX7vrBBOs6xyjSTzBlYSs7W4OET4tlkR/Sg9NG8jkdJH9Mymq0qGdYS1VPqRTBnQ==", + "type": "package", + "path": "system.composition.convention/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Composition.Convention.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Composition.Convention.targets", + "lib/net462/System.Composition.Convention.dll", + "lib/net462/System.Composition.Convention.xml", + "lib/net6.0/System.Composition.Convention.dll", + "lib/net6.0/System.Composition.Convention.xml", + "lib/net7.0/System.Composition.Convention.dll", + "lib/net7.0/System.Composition.Convention.xml", + "lib/netstandard2.0/System.Composition.Convention.dll", + "lib/netstandard2.0/System.Composition.Convention.xml", + "system.composition.convention.7.0.0.nupkg.sha512", + "system.composition.convention.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Hosting/7.0.0": { + "sha512": "eB6gwN9S+54jCTBJ5bpwMOVerKeUfGGTYCzz3QgDr1P55Gg/Wb27ShfPIhLMjmZ3MoAKu8uUSv6fcCdYJTN7Bg==", + "type": "package", + "path": "system.composition.hosting/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Composition.Hosting.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Composition.Hosting.targets", + "lib/net462/System.Composition.Hosting.dll", + "lib/net462/System.Composition.Hosting.xml", + "lib/net6.0/System.Composition.Hosting.dll", + "lib/net6.0/System.Composition.Hosting.xml", + "lib/net7.0/System.Composition.Hosting.dll", + "lib/net7.0/System.Composition.Hosting.xml", + "lib/netstandard2.0/System.Composition.Hosting.dll", + "lib/netstandard2.0/System.Composition.Hosting.xml", + "system.composition.hosting.7.0.0.nupkg.sha512", + "system.composition.hosting.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Runtime/7.0.0": { + "sha512": "aZJ1Zr5Txe925rbo4742XifEyW0MIni1eiUebmcrP3HwLXZ3IbXUj4MFMUH/RmnJOAQiS401leg/2Sz1MkApDw==", + "type": "package", + "path": "system.composition.runtime/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Composition.Runtime.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Composition.Runtime.targets", + "lib/net462/System.Composition.Runtime.dll", + "lib/net462/System.Composition.Runtime.xml", + "lib/net6.0/System.Composition.Runtime.dll", + "lib/net6.0/System.Composition.Runtime.xml", + "lib/net7.0/System.Composition.Runtime.dll", + "lib/net7.0/System.Composition.Runtime.xml", + "lib/netstandard2.0/System.Composition.Runtime.dll", + "lib/netstandard2.0/System.Composition.Runtime.xml", + "system.composition.runtime.7.0.0.nupkg.sha512", + "system.composition.runtime.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.TypedParts/7.0.0": { + "sha512": "ZK0KNPfbtxVceTwh+oHNGUOYV2WNOHReX2AXipuvkURC7s/jPwoWfsu3SnDBDgofqbiWr96geofdQ2erm/KTHg==", + "type": "package", + "path": "system.composition.typedparts/7.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Composition.TypedParts.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Composition.TypedParts.targets", + "lib/net462/System.Composition.TypedParts.dll", + "lib/net462/System.Composition.TypedParts.xml", + "lib/net6.0/System.Composition.TypedParts.dll", + "lib/net6.0/System.Composition.TypedParts.xml", + "lib/net7.0/System.Composition.TypedParts.dll", + "lib/net7.0/System.Composition.TypedParts.xml", + "lib/netstandard2.0/System.Composition.TypedParts.dll", + "lib/netstandard2.0/System.Composition.TypedParts.xml", + "system.composition.typedparts.7.0.0.nupkg.sha512", + "system.composition.typedparts.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.IdentityModel.Tokens.Jwt/8.0.1": { + "sha512": "GJw3bYkWpOgvN3tJo5X4lYUeIFA2HD293FPUhKmp7qxS+g5ywAb34Dnd3cDAFLkcMohy5XTpoaZ4uAHuw0uSPQ==", + "type": "package", + "path": "system.identitymodel.tokens.jwt/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net462/System.IdentityModel.Tokens.Jwt.dll", + "lib/net462/System.IdentityModel.Tokens.Jwt.xml", + "lib/net472/System.IdentityModel.Tokens.Jwt.dll", + "lib/net472/System.IdentityModel.Tokens.Jwt.xml", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net6.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net8.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/net9.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/net9.0/System.IdentityModel.Tokens.Jwt.xml", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll", + "lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml", + "system.identitymodel.tokens.jwt.8.0.1.nupkg.sha512", + "system.identitymodel.tokens.jwt.nuspec" + ] + }, + "System.IO.Hashing/8.0.0": { + "sha512": "ne1843evDugl0md7Fjzy6QjJrzsjh46ZKbhf8GwBXb5f/gw97J4bxMs0NQKifDuThh/f0bZ0e62NPl1jzTuRqA==", + "type": "package", + "path": "system.io.hashing/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.IO.Hashing.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.IO.Hashing.targets", + "lib/net462/System.IO.Hashing.dll", + "lib/net462/System.IO.Hashing.xml", + "lib/net6.0/System.IO.Hashing.dll", + "lib/net6.0/System.IO.Hashing.xml", + "lib/net7.0/System.IO.Hashing.dll", + "lib/net7.0/System.IO.Hashing.xml", + "lib/net8.0/System.IO.Hashing.dll", + "lib/net8.0/System.IO.Hashing.xml", + "lib/netstandard2.0/System.IO.Hashing.dll", + "lib/netstandard2.0/System.IO.Hashing.xml", + "system.io.hashing.8.0.0.nupkg.sha512", + "system.io.hashing.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Yarp.ReverseProxy/2.2.0": { + "sha512": "t16Z+OplJEElJy1Q6t12EwMGF2BeLw8IKjD1ema7ewbCRaMqeVIRPZo3MlxidnRFRK+tV6II8tKYX+7N5ZS98A==", + "type": "package", + "path": "yarp.reverseproxy/2.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net6.0/Yarp.ReverseProxy.dll", + "lib/net6.0/Yarp.ReverseProxy.xml", + "lib/net7.0/Yarp.ReverseProxy.dll", + "lib/net7.0/Yarp.ReverseProxy.xml", + "lib/net8.0/Yarp.ReverseProxy.dll", + "lib/net8.0/Yarp.ReverseProxy.xml", + "yarp.reverseproxy.2.2.0.nupkg.sha512", + "yarp.reverseproxy.nuspec" + ] + } + }, + "projectFileDependencyGroups": { + "net10.0": [ + "Microsoft.AspNetCore.Authentication.JwtBearer >= 10.0.0", + "Microsoft.EntityFrameworkCore.Design >= 9.0.0", + "Npgsql.EntityFrameworkCore.PostgreSQL >= 9.0.0", + "Serilog.AspNetCore >= 8.0.0", + "Serilog.Sinks.Console >= 6.0.0", + "Serilog.Sinks.File >= 6.0.0", + "StackExchange.Redis >= 2.8.16", + "Yarp.ReverseProxy >= 2.2.0" + ] + }, + "packageFolders": { + "/Users/movingsam/.nuget/packages/": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/YarpGateway.csproj", + "projectName": "YarpGateway", + "projectPath": "/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/YarpGateway.csproj", + "packagesPath": "/Users/movingsam/.nuget/packages/", + "outputPath": "/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/obj/", + "projectStyle": "PackageReference", + "configFilePaths": [ + "/Users/movingsam/.nuget/NuGet/NuGet.Config" + ], + "originalTargetFrameworks": [ + "net10.0" + ], + "sources": { + "/usr/local/share/dotnet/library-packs": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net10.0": { + "targetAlias": "net10.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "all" + }, + "SdkAnalysisLevel": "10.0.100" + }, + "frameworks": { + "net10.0": { + "targetAlias": "net10.0", + "dependencies": { + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "target": "Package", + "version": "[10.0.0, )" + }, + "Microsoft.EntityFrameworkCore.Design": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[9.0.0, )" + }, + "Npgsql.EntityFrameworkCore.PostgreSQL": { + "target": "Package", + "version": "[9.0.0, )" + }, + "Serilog.AspNetCore": { + "target": "Package", + "version": "[8.0.0, )" + }, + "Serilog.Sinks.Console": { + "target": "Package", + "version": "[6.0.0, )" + }, + "Serilog.Sinks.File": { + "target": "Package", + "version": "[6.0.0, )" + }, + "StackExchange.Redis": { + "target": "Package", + "version": "[2.8.16, )" + }, + "Yarp.ReverseProxy": { + "target": "Package", + "version": "[2.2.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "/usr/local/share/dotnet/sdk/10.0.101/PortableRuntimeIdentifierGraph.json", + "packagesToPrune": { + "Microsoft.AspNetCore": "(,10.0.32767]", + "Microsoft.AspNetCore.Antiforgery": "(,10.0.32767]", + "Microsoft.AspNetCore.App": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication.BearerToken": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication.Cookies": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication.Core": "(,10.0.32767]", + "Microsoft.AspNetCore.Authentication.OAuth": "(,10.0.32767]", + "Microsoft.AspNetCore.Authorization": "(,10.0.32767]", + "Microsoft.AspNetCore.Authorization.Policy": "(,10.0.32767]", + "Microsoft.AspNetCore.Components": "(,10.0.32767]", + "Microsoft.AspNetCore.Components.Authorization": "(,10.0.32767]", + "Microsoft.AspNetCore.Components.Endpoints": "(,10.0.32767]", + "Microsoft.AspNetCore.Components.Forms": "(,10.0.32767]", + "Microsoft.AspNetCore.Components.Server": "(,10.0.32767]", + "Microsoft.AspNetCore.Components.Web": "(,10.0.32767]", + "Microsoft.AspNetCore.Connections.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.CookiePolicy": "(,10.0.32767]", + "Microsoft.AspNetCore.Cors": "(,10.0.32767]", + "Microsoft.AspNetCore.Cryptography.Internal": "(,10.0.32767]", + "Microsoft.AspNetCore.Cryptography.KeyDerivation": "(,10.0.32767]", + "Microsoft.AspNetCore.DataProtection": "(,10.0.32767]", + "Microsoft.AspNetCore.DataProtection.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.DataProtection.Extensions": "(,10.0.32767]", + "Microsoft.AspNetCore.Diagnostics": "(,10.0.32767]", + "Microsoft.AspNetCore.Diagnostics.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Diagnostics.HealthChecks": "(,10.0.32767]", + "Microsoft.AspNetCore.HostFiltering": "(,10.0.32767]", + "Microsoft.AspNetCore.Hosting": "(,10.0.32767]", + "Microsoft.AspNetCore.Hosting.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Hosting.Server.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Html.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Http": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Connections": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Connections.Common": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Extensions": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Features": "(,10.0.32767]", + "Microsoft.AspNetCore.Http.Results": "(,10.0.32767]", + "Microsoft.AspNetCore.HttpLogging": "(,10.0.32767]", + "Microsoft.AspNetCore.HttpOverrides": "(,10.0.32767]", + "Microsoft.AspNetCore.HttpsPolicy": "(,10.0.32767]", + "Microsoft.AspNetCore.Identity": "(,10.0.32767]", + "Microsoft.AspNetCore.Localization": "(,10.0.32767]", + "Microsoft.AspNetCore.Localization.Routing": "(,10.0.32767]", + "Microsoft.AspNetCore.Metadata": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.ApiExplorer": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Core": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Cors": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.DataAnnotations": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Formatters.Json": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Formatters.Xml": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Localization": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.Razor": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.RazorPages": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.TagHelpers": "(,10.0.32767]", + "Microsoft.AspNetCore.Mvc.ViewFeatures": "(,10.0.32767]", + "Microsoft.AspNetCore.OutputCaching": "(,10.0.32767]", + "Microsoft.AspNetCore.RateLimiting": "(,10.0.32767]", + "Microsoft.AspNetCore.Razor": "(,10.0.32767]", + "Microsoft.AspNetCore.Razor.Runtime": "(,10.0.32767]", + "Microsoft.AspNetCore.RequestDecompression": "(,10.0.32767]", + "Microsoft.AspNetCore.ResponseCaching": "(,10.0.32767]", + "Microsoft.AspNetCore.ResponseCaching.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.ResponseCompression": "(,10.0.32767]", + "Microsoft.AspNetCore.Rewrite": "(,10.0.32767]", + "Microsoft.AspNetCore.Routing": "(,10.0.32767]", + "Microsoft.AspNetCore.Routing.Abstractions": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.HttpSys": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.IIS": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.IISIntegration": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.Kestrel": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.Kestrel.Core": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.Kestrel.Transport.Quic": "(,10.0.32767]", + "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets": "(,10.0.32767]", + "Microsoft.AspNetCore.Session": "(,10.0.32767]", + "Microsoft.AspNetCore.SignalR": "(,10.0.32767]", + "Microsoft.AspNetCore.SignalR.Common": "(,10.0.32767]", + "Microsoft.AspNetCore.SignalR.Core": "(,10.0.32767]", + "Microsoft.AspNetCore.SignalR.Protocols.Json": "(,10.0.32767]", + "Microsoft.AspNetCore.StaticAssets": "(,10.0.32767]", + "Microsoft.AspNetCore.StaticFiles": "(,10.0.32767]", + "Microsoft.AspNetCore.WebSockets": "(,10.0.32767]", + "Microsoft.AspNetCore.WebUtilities": "(,10.0.32767]", + "Microsoft.CSharp": "(,4.7.32767]", + "Microsoft.Extensions.Caching.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Caching.Memory": "(,10.0.32767]", + "Microsoft.Extensions.Configuration": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.Binder": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.CommandLine": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.FileExtensions": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.Ini": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.Json": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.KeyPerFile": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.UserSecrets": "(,10.0.32767]", + "Microsoft.Extensions.Configuration.Xml": "(,10.0.32767]", + "Microsoft.Extensions.DependencyInjection": "(,10.0.32767]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Diagnostics": "(,10.0.32767]", + "Microsoft.Extensions.Diagnostics.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Diagnostics.HealthChecks": "(,10.0.32767]", + "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Features": "(,10.0.32767]", + "Microsoft.Extensions.FileProviders.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.FileProviders.Composite": "(,10.0.32767]", + "Microsoft.Extensions.FileProviders.Physical": "(,10.0.32767]", + "Microsoft.Extensions.FileSystemGlobbing": "(,10.0.32767]", + "Microsoft.Extensions.Hosting": "(,10.0.32767]", + "Microsoft.Extensions.Hosting.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Http": "(,10.0.32767]", + "Microsoft.Extensions.Identity.Core": "(,10.0.32767]", + "Microsoft.Extensions.Identity.Stores": "(,10.0.32767]", + "Microsoft.Extensions.Localization": "(,10.0.32767]", + "Microsoft.Extensions.Localization.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Logging": "(,10.0.32767]", + "Microsoft.Extensions.Logging.Abstractions": "(,10.0.32767]", + "Microsoft.Extensions.Logging.Configuration": "(,10.0.32767]", + "Microsoft.Extensions.Logging.Console": "(,10.0.32767]", + "Microsoft.Extensions.Logging.Debug": "(,10.0.32767]", + "Microsoft.Extensions.Logging.EventLog": "(,10.0.32767]", + "Microsoft.Extensions.Logging.EventSource": "(,10.0.32767]", + "Microsoft.Extensions.Logging.TraceSource": "(,10.0.32767]", + "Microsoft.Extensions.ObjectPool": "(,10.0.32767]", + "Microsoft.Extensions.Options": "(,10.0.32767]", + "Microsoft.Extensions.Options.ConfigurationExtensions": "(,10.0.32767]", + "Microsoft.Extensions.Options.DataAnnotations": "(,10.0.32767]", + "Microsoft.Extensions.Primitives": "(,10.0.32767]", + "Microsoft.Extensions.Validation": "(,10.0.32767]", + "Microsoft.Extensions.WebEncoders": "(,10.0.32767]", + "Microsoft.JSInterop": "(,10.0.32767]", + "Microsoft.Net.Http.Headers": "(,10.0.32767]", + "Microsoft.VisualBasic": "(,10.4.32767]", + "Microsoft.Win32.Primitives": "(,4.3.32767]", + "Microsoft.Win32.Registry": "(,5.0.32767]", + "runtime.any.System.Collections": "(,4.3.32767]", + "runtime.any.System.Diagnostics.Tools": "(,4.3.32767]", + "runtime.any.System.Diagnostics.Tracing": "(,4.3.32767]", + "runtime.any.System.Globalization": "(,4.3.32767]", + "runtime.any.System.Globalization.Calendars": "(,4.3.32767]", + "runtime.any.System.IO": "(,4.3.32767]", + "runtime.any.System.Reflection": "(,4.3.32767]", + "runtime.any.System.Reflection.Extensions": "(,4.3.32767]", + "runtime.any.System.Reflection.Primitives": "(,4.3.32767]", + "runtime.any.System.Resources.ResourceManager": "(,4.3.32767]", + "runtime.any.System.Runtime": "(,4.3.32767]", + "runtime.any.System.Runtime.Handles": "(,4.3.32767]", + "runtime.any.System.Runtime.InteropServices": "(,4.3.32767]", + "runtime.any.System.Text.Encoding": "(,4.3.32767]", + "runtime.any.System.Text.Encoding.Extensions": "(,4.3.32767]", + "runtime.any.System.Threading.Tasks": "(,4.3.32767]", + "runtime.any.System.Threading.Timer": "(,4.3.32767]", + "runtime.aot.System.Collections": "(,4.3.32767]", + "runtime.aot.System.Diagnostics.Tools": "(,4.3.32767]", + "runtime.aot.System.Diagnostics.Tracing": "(,4.3.32767]", + "runtime.aot.System.Globalization": "(,4.3.32767]", + "runtime.aot.System.Globalization.Calendars": "(,4.3.32767]", + "runtime.aot.System.IO": "(,4.3.32767]", + "runtime.aot.System.Reflection": "(,4.3.32767]", + "runtime.aot.System.Reflection.Extensions": "(,4.3.32767]", + "runtime.aot.System.Reflection.Primitives": "(,4.3.32767]", + "runtime.aot.System.Resources.ResourceManager": "(,4.3.32767]", + "runtime.aot.System.Runtime": "(,4.3.32767]", + "runtime.aot.System.Runtime.Handles": "(,4.3.32767]", + "runtime.aot.System.Runtime.InteropServices": "(,4.3.32767]", + "runtime.aot.System.Text.Encoding": "(,4.3.32767]", + "runtime.aot.System.Text.Encoding.Extensions": "(,4.3.32767]", + "runtime.aot.System.Threading.Tasks": "(,4.3.32767]", + "runtime.aot.System.Threading.Timer": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.debian.9-x64.runtime.native.System": "(,4.3.32767]", + "runtime.debian.9-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.debian.9-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.debian.9-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.fedora.27-x64.runtime.native.System": "(,4.3.32767]", + "runtime.fedora.27-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.fedora.27-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.fedora.27-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.fedora.28-x64.runtime.native.System": "(,4.3.32767]", + "runtime.fedora.28-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.fedora.28-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.fedora.28-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.opensuse.42.3-x64.runtime.native.System": "(,4.3.32767]", + "runtime.opensuse.42.3-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.opensuse.42.3-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.opensuse.42.3-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "(,4.3.32767]", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography": "(,4.3.32767]", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "(,4.3.32767]", + "runtime.ubuntu.18.04-x64.runtime.native.System": "(,4.3.32767]", + "runtime.ubuntu.18.04-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.ubuntu.18.04-x64.runtime.native.System.Net.Http": "(,4.3.32767]", + "runtime.ubuntu.18.04-x64.runtime.native.System.Net.Security": "(,4.3.32767]", + "runtime.unix.Microsoft.Win32.Primitives": "(,4.3.32767]", + "runtime.unix.System.Console": "(,4.3.32767]", + "runtime.unix.System.Diagnostics.Debug": "(,4.3.32767]", + "runtime.unix.System.IO.FileSystem": "(,4.3.32767]", + "runtime.unix.System.Net.Primitives": "(,4.3.32767]", + "runtime.unix.System.Net.Sockets": "(,4.3.32767]", + "runtime.unix.System.Private.Uri": "(,4.3.32767]", + "runtime.unix.System.Runtime.Extensions": "(,4.3.32767]", + "runtime.win.Microsoft.Win32.Primitives": "(,4.3.32767]", + "runtime.win.System.Console": "(,4.3.32767]", + "runtime.win.System.Diagnostics.Debug": "(,4.3.32767]", + "runtime.win.System.IO.FileSystem": "(,4.3.32767]", + "runtime.win.System.Net.Primitives": "(,4.3.32767]", + "runtime.win.System.Net.Sockets": "(,4.3.32767]", + "runtime.win.System.Runtime.Extensions": "(,4.3.32767]", + "runtime.win10-arm-aot.runtime.native.System.IO.Compression": "(,4.0.32767]", + "runtime.win10-arm64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.win10-x64-aot.runtime.native.System.IO.Compression": "(,4.0.32767]", + "runtime.win10-x86-aot.runtime.native.System.IO.Compression": "(,4.0.32767]", + "runtime.win7-x64.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.win7-x86.runtime.native.System.IO.Compression": "(,4.3.32767]", + "runtime.win7.System.Private.Uri": "(,4.3.32767]", + "runtime.win8-arm.runtime.native.System.IO.Compression": "(,4.3.32767]", + "System.AppContext": "(,4.3.32767]", + "System.Buffers": "(,5.0.32767]", + "System.Collections": "(,4.3.32767]", + "System.Collections.Concurrent": "(,4.3.32767]", + "System.Collections.Immutable": "(,10.0.32767]", + "System.Collections.NonGeneric": "(,4.3.32767]", + "System.Collections.Specialized": "(,4.3.32767]", + "System.ComponentModel": "(,4.3.32767]", + "System.ComponentModel.Annotations": "(,4.3.32767]", + "System.ComponentModel.EventBasedAsync": "(,4.3.32767]", + "System.ComponentModel.Primitives": "(,4.3.32767]", + "System.ComponentModel.TypeConverter": "(,4.3.32767]", + "System.Console": "(,4.3.32767]", + "System.Data.Common": "(,4.3.32767]", + "System.Data.DataSetExtensions": "(,4.4.32767]", + "System.Diagnostics.Contracts": "(,4.3.32767]", + "System.Diagnostics.Debug": "(,4.3.32767]", + "System.Diagnostics.DiagnosticSource": "(,10.0.32767]", + "System.Diagnostics.EventLog": "(,10.0.32767]", + "System.Diagnostics.FileVersionInfo": "(,4.3.32767]", + "System.Diagnostics.Process": "(,4.3.32767]", + "System.Diagnostics.StackTrace": "(,4.3.32767]", + "System.Diagnostics.TextWriterTraceListener": "(,4.3.32767]", + "System.Diagnostics.Tools": "(,4.3.32767]", + "System.Diagnostics.TraceSource": "(,4.3.32767]", + "System.Diagnostics.Tracing": "(,4.3.32767]", + "System.Drawing.Primitives": "(,4.3.32767]", + "System.Dynamic.Runtime": "(,4.3.32767]", + "System.Formats.Asn1": "(,10.0.32767]", + "System.Formats.Cbor": "(,10.0.32767]", + "System.Formats.Tar": "(,10.0.32767]", + "System.Globalization": "(,4.3.32767]", + "System.Globalization.Calendars": "(,4.3.32767]", + "System.Globalization.Extensions": "(,4.3.32767]", + "System.IO": "(,4.3.32767]", + "System.IO.Compression": "(,4.3.32767]", + "System.IO.Compression.ZipFile": "(,4.3.32767]", + "System.IO.FileSystem": "(,4.3.32767]", + "System.IO.FileSystem.AccessControl": "(,4.4.32767]", + "System.IO.FileSystem.DriveInfo": "(,4.3.32767]", + "System.IO.FileSystem.Primitives": "(,4.3.32767]", + "System.IO.FileSystem.Watcher": "(,4.3.32767]", + "System.IO.IsolatedStorage": "(,4.3.32767]", + "System.IO.MemoryMappedFiles": "(,4.3.32767]", + "System.IO.Pipelines": "(,10.0.32767]", + "System.IO.Pipes": "(,4.3.32767]", + "System.IO.Pipes.AccessControl": "(,5.0.32767]", + "System.IO.UnmanagedMemoryStream": "(,4.3.32767]", + "System.Linq": "(,4.3.32767]", + "System.Linq.AsyncEnumerable": "(,10.0.32767]", + "System.Linq.Expressions": "(,4.3.32767]", + "System.Linq.Parallel": "(,4.3.32767]", + "System.Linq.Queryable": "(,4.3.32767]", + "System.Memory": "(,5.0.32767]", + "System.Net.Http": "(,4.3.32767]", + "System.Net.Http.Json": "(,10.0.32767]", + "System.Net.NameResolution": "(,4.3.32767]", + "System.Net.NetworkInformation": "(,4.3.32767]", + "System.Net.Ping": "(,4.3.32767]", + "System.Net.Primitives": "(,4.3.32767]", + "System.Net.Requests": "(,4.3.32767]", + "System.Net.Security": "(,4.3.32767]", + "System.Net.ServerSentEvents": "(,10.0.32767]", + "System.Net.Sockets": "(,4.3.32767]", + "System.Net.WebHeaderCollection": "(,4.3.32767]", + "System.Net.WebSockets": "(,4.3.32767]", + "System.Net.WebSockets.Client": "(,4.3.32767]", + "System.Numerics.Vectors": "(,5.0.32767]", + "System.ObjectModel": "(,4.3.32767]", + "System.Private.DataContractSerialization": "(,4.3.32767]", + "System.Private.Uri": "(,4.3.32767]", + "System.Reflection": "(,4.3.32767]", + "System.Reflection.DispatchProxy": "(,6.0.32767]", + "System.Reflection.Emit": "(,4.7.32767]", + "System.Reflection.Emit.ILGeneration": "(,4.7.32767]", + "System.Reflection.Emit.Lightweight": "(,4.7.32767]", + "System.Reflection.Extensions": "(,4.3.32767]", + "System.Reflection.Metadata": "(,10.0.32767]", + "System.Reflection.Primitives": "(,4.3.32767]", + "System.Reflection.TypeExtensions": "(,4.3.32767]", + "System.Resources.Reader": "(,4.3.32767]", + "System.Resources.ResourceManager": "(,4.3.32767]", + "System.Resources.Writer": "(,4.3.32767]", + "System.Runtime": "(,4.3.32767]", + "System.Runtime.CompilerServices.Unsafe": "(,7.0.32767]", + "System.Runtime.CompilerServices.VisualC": "(,4.3.32767]", + "System.Runtime.Extensions": "(,4.3.32767]", + "System.Runtime.Handles": "(,4.3.32767]", + "System.Runtime.InteropServices": "(,4.3.32767]", + "System.Runtime.InteropServices.RuntimeInformation": "(,4.3.32767]", + "System.Runtime.Loader": "(,4.3.32767]", + "System.Runtime.Numerics": "(,4.3.32767]", + "System.Runtime.Serialization.Formatters": "(,4.3.32767]", + "System.Runtime.Serialization.Json": "(,4.3.32767]", + "System.Runtime.Serialization.Primitives": "(,4.3.32767]", + "System.Runtime.Serialization.Xml": "(,4.3.32767]", + "System.Security.AccessControl": "(,6.0.32767]", + "System.Security.Claims": "(,4.3.32767]", + "System.Security.Cryptography.Algorithms": "(,4.3.32767]", + "System.Security.Cryptography.Cng": "(,5.0.32767]", + "System.Security.Cryptography.Csp": "(,4.3.32767]", + "System.Security.Cryptography.Encoding": "(,4.3.32767]", + "System.Security.Cryptography.OpenSsl": "(,5.0.32767]", + "System.Security.Cryptography.Primitives": "(,4.3.32767]", + "System.Security.Cryptography.X509Certificates": "(,4.3.32767]", + "System.Security.Cryptography.Xml": "(,10.0.32767]", + "System.Security.Principal": "(,4.3.32767]", + "System.Security.Principal.Windows": "(,5.0.32767]", + "System.Security.SecureString": "(,4.3.32767]", + "System.Text.Encoding": "(,4.3.32767]", + "System.Text.Encoding.CodePages": "(,10.0.32767]", + "System.Text.Encoding.Extensions": "(,4.3.32767]", + "System.Text.Encodings.Web": "(,10.0.32767]", + "System.Text.Json": "(,10.0.32767]", + "System.Text.RegularExpressions": "(,4.3.32767]", + "System.Threading": "(,4.3.32767]", + "System.Threading.AccessControl": "(,10.0.32767]", + "System.Threading.Channels": "(,10.0.32767]", + "System.Threading.Overlapped": "(,4.3.32767]", + "System.Threading.RateLimiting": "(,10.0.32767]", + "System.Threading.Tasks": "(,4.3.32767]", + "System.Threading.Tasks.Dataflow": "(,10.0.32767]", + "System.Threading.Tasks.Extensions": "(,5.0.32767]", + "System.Threading.Tasks.Parallel": "(,4.3.32767]", + "System.Threading.Thread": "(,4.3.32767]", + "System.Threading.ThreadPool": "(,4.3.32767]", + "System.Threading.Timer": "(,4.3.32767]", + "System.ValueTuple": "(,4.5.32767]", + "System.Xml.ReaderWriter": "(,4.3.32767]", + "System.Xml.XDocument": "(,4.3.32767]", + "System.Xml.XmlDocument": "(,4.3.32767]", + "System.Xml.XmlSerializer": "(,4.3.32767]", + "System.Xml.XPath": "(,4.3.32767]", + "System.Xml.XPath.XDocument": "(,5.0.32767]" + } + } + } + } +} \ No newline at end of file diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache new file mode 100644 index 0000000..911f7df --- /dev/null +++ b/obj/project.nuget.cache @@ -0,0 +1,56 @@ +{ + "version": 2, + "dgSpecHash": "kDkdehON0hM=", + "success": true, + "projectFilePath": "/Users/movingsam/Fengling.Refactory.Buiding/src/YarpGateway/YarpGateway.csproj", + "expectedPackageFiles": [ + "/Users/movingsam/.nuget/packages/humanizer.core/2.14.1/humanizer.core.2.14.1.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.aspnetcore.authentication.jwtbearer/10.0.0/microsoft.aspnetcore.authentication.jwtbearer.10.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.bcl.asyncinterfaces/7.0.0/microsoft.bcl.asyncinterfaces.7.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.build.framework/17.8.3/microsoft.build.framework.17.8.3.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.build.locator/1.7.8/microsoft.build.locator.1.7.8.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.codeanalysis.analyzers/3.3.4/microsoft.codeanalysis.analyzers.3.3.4.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.codeanalysis.common/4.8.0/microsoft.codeanalysis.common.4.8.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.codeanalysis.csharp/4.8.0/microsoft.codeanalysis.csharp.4.8.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.codeanalysis.csharp.workspaces/4.8.0/microsoft.codeanalysis.csharp.workspaces.4.8.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.codeanalysis.workspaces.common/4.8.0/microsoft.codeanalysis.workspaces.common.4.8.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.codeanalysis.workspaces.msbuild/4.8.0/microsoft.codeanalysis.workspaces.msbuild.4.8.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.entityframeworkcore/9.0.0/microsoft.entityframeworkcore.9.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.entityframeworkcore.abstractions/9.0.0/microsoft.entityframeworkcore.abstractions.9.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.entityframeworkcore.analyzers/9.0.0/microsoft.entityframeworkcore.analyzers.9.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.entityframeworkcore.design/9.0.0/microsoft.entityframeworkcore.design.9.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.entityframeworkcore.relational/9.0.0/microsoft.entityframeworkcore.relational.9.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.extensions.dependencymodel/9.0.0/microsoft.extensions.dependencymodel.9.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.identitymodel.abstractions/8.0.1/microsoft.identitymodel.abstractions.8.0.1.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.identitymodel.jsonwebtokens/8.0.1/microsoft.identitymodel.jsonwebtokens.8.0.1.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.identitymodel.logging/8.0.1/microsoft.identitymodel.logging.8.0.1.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.identitymodel.protocols/8.0.1/microsoft.identitymodel.protocols.8.0.1.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.identitymodel.protocols.openidconnect/8.0.1/microsoft.identitymodel.protocols.openidconnect.8.0.1.nupkg.sha512", + "/Users/movingsam/.nuget/packages/microsoft.identitymodel.tokens/8.0.1/microsoft.identitymodel.tokens.8.0.1.nupkg.sha512", + "/Users/movingsam/.nuget/packages/mono.texttemplating/3.0.0/mono.texttemplating.3.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/npgsql/9.0.0/npgsql.9.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/npgsql.entityframeworkcore.postgresql/9.0.0/npgsql.entityframeworkcore.postgresql.9.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/pipelines.sockets.unofficial/2.2.8/pipelines.sockets.unofficial.2.2.8.nupkg.sha512", + "/Users/movingsam/.nuget/packages/serilog/4.0.0/serilog.4.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/serilog.aspnetcore/8.0.0/serilog.aspnetcore.8.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/serilog.extensions.hosting/8.0.0/serilog.extensions.hosting.8.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/serilog.extensions.logging/8.0.0/serilog.extensions.logging.8.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/serilog.formatting.compact/2.0.0/serilog.formatting.compact.2.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/serilog.settings.configuration/8.0.0/serilog.settings.configuration.8.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/serilog.sinks.console/6.0.0/serilog.sinks.console.6.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/serilog.sinks.debug/2.0.0/serilog.sinks.debug.2.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/serilog.sinks.file/6.0.0/serilog.sinks.file.6.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/stackexchange.redis/2.8.16/stackexchange.redis.2.8.16.nupkg.sha512", + "/Users/movingsam/.nuget/packages/system.codedom/6.0.0/system.codedom.6.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/system.composition/7.0.0/system.composition.7.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/system.composition.attributedmodel/7.0.0/system.composition.attributedmodel.7.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/system.composition.convention/7.0.0/system.composition.convention.7.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/system.composition.hosting/7.0.0/system.composition.hosting.7.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/system.composition.runtime/7.0.0/system.composition.runtime.7.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/system.composition.typedparts/7.0.0/system.composition.typedparts.7.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/system.identitymodel.tokens.jwt/8.0.1/system.identitymodel.tokens.jwt.8.0.1.nupkg.sha512", + "/Users/movingsam/.nuget/packages/system.io.hashing/8.0.0/system.io.hashing.8.0.0.nupkg.sha512", + "/Users/movingsam/.nuget/packages/yarp.reverseproxy/2.2.0/yarp.reverseproxy.2.2.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/sql/init.sql b/sql/init.sql new file mode 100644 index 0000000..050e4d4 --- /dev/null +++ b/sql/init.sql @@ -0,0 +1,72 @@ +CREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" ( + "MigrationId" character varying(150) NOT NULL, + "ProductVersion" character varying(32) NOT NULL, + CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY ("MigrationId") +); + +START TRANSACTION; +CREATE TABLE "ServiceInstances" ( + "Id" bigint GENERATED BY DEFAULT AS IDENTITY, + "ClusterId" character varying(100) NOT NULL, + "DestinationId" character varying(100) NOT NULL, + "Address" character varying(200) NOT NULL, + "Health" integer NOT NULL, + "Weight" integer NOT NULL, + "Status" integer NOT NULL, + "CreatedBy" bigint, + "CreatedTime" timestamp with time zone NOT NULL, + "UpdatedBy" bigint, + "UpdatedTime" timestamp with time zone, + "IsDeleted" boolean NOT NULL, + "Version" integer NOT NULL, + CONSTRAINT "PK_ServiceInstances" PRIMARY KEY ("Id") +); + +CREATE TABLE "Tenants" ( + "Id" bigint GENERATED BY DEFAULT AS IDENTITY, + "TenantCode" character varying(50) NOT NULL, + "TenantName" character varying(100) NOT NULL, + "Status" integer NOT NULL, + "CreatedBy" bigint, + "CreatedTime" timestamp with time zone NOT NULL, + "UpdatedBy" bigint, + "UpdatedTime" timestamp with time zone, + "IsDeleted" boolean NOT NULL, + "Version" integer NOT NULL, + CONSTRAINT "PK_Tenants" PRIMARY KEY ("Id"), + CONSTRAINT "AK_Tenants_TenantCode" UNIQUE ("TenantCode") +); + +CREATE TABLE "TenantRoutes" ( + "Id" bigint GENERATED BY DEFAULT AS IDENTITY, + "TenantCode" character varying(50) NOT NULL, + "ServiceName" character varying(100) NOT NULL, + "ClusterId" character varying(100) NOT NULL, + "PathPattern" character varying(200) NOT NULL, + "Priority" integer NOT NULL, + "Status" integer NOT NULL, + "CreatedBy" bigint, + "CreatedTime" timestamp with time zone NOT NULL, + "UpdatedBy" bigint, + "UpdatedTime" timestamp with time zone, + "IsDeleted" boolean NOT NULL, + "Version" integer NOT NULL, + CONSTRAINT "PK_TenantRoutes" PRIMARY KEY ("Id"), + CONSTRAINT "FK_TenantRoutes_Tenants_TenantCode" FOREIGN KEY ("TenantCode") REFERENCES "Tenants" ("TenantCode") ON DELETE RESTRICT +); + +CREATE UNIQUE INDEX "IX_ServiceInstances_ClusterId_DestinationId" ON "ServiceInstances" ("ClusterId", "DestinationId"); + +CREATE INDEX "IX_ServiceInstances_Health" ON "ServiceInstances" ("Health"); + +CREATE INDEX "IX_TenantRoutes_ClusterId" ON "TenantRoutes" ("ClusterId"); + +CREATE UNIQUE INDEX "IX_TenantRoutes_TenantCode_ServiceName" ON "TenantRoutes" ("TenantCode", "ServiceName"); + +CREATE UNIQUE INDEX "IX_Tenants_TenantCode" ON "Tenants" ("TenantCode"); + +INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion") +VALUES ('20260201120312_InitialCreate', '9.0.0'); + +COMMIT; + diff --git a/sql/update-isglobal.sql b/sql/update-isglobal.sql new file mode 100644 index 0000000..ba25c48 --- /dev/null +++ b/sql/update-isglobal.sql @@ -0,0 +1,174 @@ +CREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" ( + "MigrationId" character varying(150) NOT NULL, + "ProductVersion" character varying(32) NOT NULL, + CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY ("MigrationId") +); + +START TRANSACTION; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201120312_InitialCreate') THEN + CREATE TABLE "ServiceInstances" ( + "Id" bigint GENERATED BY DEFAULT AS IDENTITY, + "ClusterId" character varying(100) NOT NULL, + "DestinationId" character varying(100) NOT NULL, + "Address" character varying(200) NOT NULL, + "Health" integer NOT NULL, + "Weight" integer NOT NULL, + "Status" integer NOT NULL, + "CreatedBy" bigint, + "CreatedTime" timestamp with time zone NOT NULL, + "UpdatedBy" bigint, + "UpdatedTime" timestamp with time zone, + "IsDeleted" boolean NOT NULL, + "Version" integer NOT NULL, + CONSTRAINT "PK_ServiceInstances" PRIMARY KEY ("Id") + ); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201120312_InitialCreate') THEN + CREATE TABLE "Tenants" ( + "Id" bigint GENERATED BY DEFAULT AS IDENTITY, + "TenantCode" character varying(50) NOT NULL, + "TenantName" character varying(100) NOT NULL, + "Status" integer NOT NULL, + "CreatedBy" bigint, + "CreatedTime" timestamp with time zone NOT NULL, + "UpdatedBy" bigint, + "UpdatedTime" timestamp with time zone, + "IsDeleted" boolean NOT NULL, + "Version" integer NOT NULL, + CONSTRAINT "PK_Tenants" PRIMARY KEY ("Id"), + CONSTRAINT "AK_Tenants_TenantCode" UNIQUE ("TenantCode") + ); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201120312_InitialCreate') THEN + CREATE TABLE "TenantRoutes" ( + "Id" bigint GENERATED BY DEFAULT AS IDENTITY, + "TenantCode" character varying(50) NOT NULL, + "ServiceName" character varying(100) NOT NULL, + "ClusterId" character varying(100) NOT NULL, + "PathPattern" character varying(200) NOT NULL, + "Priority" integer NOT NULL, + "Status" integer NOT NULL, + "CreatedBy" bigint, + "CreatedTime" timestamp with time zone NOT NULL, + "UpdatedBy" bigint, + "UpdatedTime" timestamp with time zone, + "IsDeleted" boolean NOT NULL, + "Version" integer NOT NULL, + CONSTRAINT "PK_TenantRoutes" PRIMARY KEY ("Id"), + CONSTRAINT "FK_TenantRoutes_Tenants_TenantCode" FOREIGN KEY ("TenantCode") REFERENCES "Tenants" ("TenantCode") ON DELETE RESTRICT + ); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201120312_InitialCreate') THEN + CREATE UNIQUE INDEX "IX_ServiceInstances_ClusterId_DestinationId" ON "ServiceInstances" ("ClusterId", "DestinationId"); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201120312_InitialCreate') THEN + CREATE INDEX "IX_ServiceInstances_Health" ON "ServiceInstances" ("Health"); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201120312_InitialCreate') THEN + CREATE INDEX "IX_TenantRoutes_ClusterId" ON "TenantRoutes" ("ClusterId"); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201120312_InitialCreate') THEN + CREATE UNIQUE INDEX "IX_TenantRoutes_TenantCode_ServiceName" ON "TenantRoutes" ("TenantCode", "ServiceName"); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201120312_InitialCreate') THEN + CREATE UNIQUE INDEX "IX_Tenants_TenantCode" ON "Tenants" ("TenantCode"); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201120312_InitialCreate') THEN + INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion") + VALUES ('20260201120312_InitialCreate', '9.0.0'); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201133826_AddIsGlobalToTenantRoute') THEN + ALTER TABLE "TenantRoutes" DROP CONSTRAINT "FK_TenantRoutes_Tenants_TenantCode"; + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201133826_AddIsGlobalToTenantRoute') THEN + ALTER TABLE "Tenants" DROP CONSTRAINT "AK_Tenants_TenantCode"; + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201133826_AddIsGlobalToTenantRoute') THEN + DROP INDEX "IX_TenantRoutes_TenantCode_ServiceName"; + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201133826_AddIsGlobalToTenantRoute') THEN + ALTER TABLE "TenantRoutes" ADD "IsGlobal" boolean NOT NULL DEFAULT FALSE; + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201133826_AddIsGlobalToTenantRoute') THEN + CREATE INDEX "IX_TenantRoutes_ServiceName" ON "TenantRoutes" ("ServiceName"); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201133826_AddIsGlobalToTenantRoute') THEN + CREATE INDEX "IX_TenantRoutes_ServiceName_IsGlobal_Status" ON "TenantRoutes" ("ServiceName", "IsGlobal", "Status"); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201133826_AddIsGlobalToTenantRoute') THEN + CREATE INDEX "IX_TenantRoutes_TenantCode" ON "TenantRoutes" ("TenantCode"); + END IF; +END $EF$; + +DO $EF$ +BEGIN + IF NOT EXISTS(SELECT 1 FROM "__EFMigrationsHistory" WHERE "MigrationId" = '20260201133826_AddIsGlobalToTenantRoute') THEN + INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion") + VALUES ('20260201133826_AddIsGlobalToTenantRoute', '9.0.0'); + END IF; +END $EF$; +COMMIT; +