public async Task <string> TestAsync()
        {
            // 找出一个健康的实例
            var instance = await _svc.SelectOneHealthyInstance("NetCoreNamingDemo", "DEFAULT_GROUP");

            var host = $"{instance.Ip}:{instance.Port}";

            // 根据 secure 来判断服务要不要用 https,
            // 这里是约定,参考了 spring cloud 那边,不是强制的,也可以用其他标识
            var baseUrl = instance.Metadata.TryGetValue("secure", out _)
                ? $"https://{host}"
                : $"http://{host}";

            if (string.IsNullOrWhiteSpace(baseUrl))
            {
                return("empty");
            }

            var url = $"{baseUrl}";

            var client = _factory.CreateClient();

            var resp = await client.GetAsync(url);

            return(await resp.Content.ReadAsStringAsync());
        }
        public ActionResult <string> Test()
        {
            /*var baseUrl = _serverManager.GetServerAsync("App2", "DEFAULT_GROUP", "DEFAULT", "cs").GetAwaiter().GetResult();*/

            var instance = _svc.SelectOneHealthyInstance("App2", "DEFAULT_GROUP").GetAwaiter().GetResult();
            var host     = $"{instance.Ip}:{instance.Port}";

            var baseUrl = instance.Metadata.TryGetValue("secure", out _)
                ? $"https://{host}"
                : $"http://{host}";

            baseUrl = "";

            if (string.IsNullOrWhiteSpace(baseUrl))
            {
                return("empty");
            }

            var url = $"{baseUrl}/api/values";

            using (HttpClient client = new HttpClient())
            {
                var result = client.GetAsync(url).GetAwaiter().GetResult();
                return(result.Content.ReadAsStringAsync().GetAwaiter().GetResult());
            }
        }
示例#3
0
        private static string GetServiceUrl(Nacos.V2.INacosNamingService serv, string ServiceName, string Group, string apiurl)
        {
            try
            {
                var instance = serv.SelectOneHealthyInstance(ServiceName, Group).GetAwaiter().GetResult();
                var host     = $"{instance.Ip}:{instance.Port}";
                if (instance.Metadata.ContainsKey("endpoint"))
                {
                    host = instance.Metadata["endpoint"];
                }


                var baseUrl = instance.Metadata.TryGetValue("secure", out _)
                   ? $"https://{host}"
                   : $"http://{host}";

                if (string.IsNullOrWhiteSpace(baseUrl))
                {
                    return("");
                }
                return($"{baseUrl}{apiurl}");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return("");
        }