コード例 #1
0
 public StatusReportBgTask(
     ILoggerFactory loggerFactory,
     INacosNamingClient client,
     IServer server,
     IOptionsMonitor <NacosAspNetCoreOptions> optionsAccs)
 {
     _logger   = loggerFactory.CreateLogger <StatusReportBgTask>();
     _client   = client;
     _options  = optionsAccs.CurrentValue;
     _features = server.Features;
 }
コード例 #2
0
        private Uri GetUri(IFeatureCollection features, NacosAspNetCoreOptions config)
        {
            var port = config.Port <= 0 ? 80 : config.Port;

            // 1. config
            if (!string.IsNullOrWhiteSpace(config.Ip))
            {
                // it seems that nacos don't return the scheme
                // so here use http only.
                return(new Uri($"http://{config.Ip}:{port}"));
            }

            var address = string.Empty;

            // 2. IServerAddressesFeature
            if (features != null)
            {
                var addresses = features.Get <IServerAddressesFeature>();
                address = addresses?.Addresses?.FirstOrDefault();

                if (address != null)
                {
                    var url = ReplaceAddress(address);
                    return(new Uri(url));
                }
            }

            // 3. ASPNETCORE_URLS
            address = Environment.GetEnvironmentVariable("ASPNETCORE_URLS");
            if (!string.IsNullOrWhiteSpace(address))
            {
                var url = ReplaceAddress(address);
                return(new Uri(url));
            }

            // 4. --urls
            var cmdArgs = Environment.GetCommandLineArgs();

            if (cmdArgs != null && cmdArgs.Any())
            {
                var cmd = cmdArgs.FirstOrDefault(x => x.StartsWith("--urls", StringComparison.OrdinalIgnoreCase));
                address = cmd.Split('=')[1];

                var url = ReplaceAddress(address);
                return(new Uri(url));
            }

            // 5. current ip address third
            address = $"http://{GetCurrentIp()}:{port}";

            return(new Uri(address));
        }