public async Task RegisterClient(FocusMetadata metadata, CancellationToken token = default)
        {
            try
            {
                var jsonData    = JsonSerializer.Serialize(metadata, _serializerOptions);// metadata.Serialize();
                var client      = _httpClientFactory.CreateClient();
                var httpContent = new StringContent(jsonData);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json")
                {
                    CharSet = "utf-8"
                };
                //client.DefaultRequestHeaders.Add("Content-Type", "application/json; charset=utf-8");
                var response = await client.PostAsync(_focusUrl, httpContent, token);

                var content = await response.Content.ReadAsStringAsync();

                if (content == "success")
                {
                    _logger.LogInformation($"Api '{metadata.Path}' has been registered as {metadata.ServiceName}_{metadata.MethodName}.");
                }
                else
                {
                    _logger.LogError($"Api '{metadata.Path}' registration failed. ");
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.StackTrace);
            }
        }
        public async Task RegisterClient(ControllerActionDescriptor p, CancellationToken token = default)
        {
            var meta = new FocusMetadata
            {
                AppName     = _options.AppName,
                ServiceName = p.ControllerName,
                MethodName  = p.ActionName,
                Path        = $"{_options.ContextPath}/{p.AttributeRouteInfo.Template}".Replace("//", "/"),
                PathDesc    = p.MethodInfo.CustomAttributes.Single(o => o.AttributeType == typeof(FocusClientAttribute))
                              .ConstructorArguments[0].Value.ToString(),
                ParameterTypes = p.Parameters?.Select(o => o.ParameterType.FullName).Aggregate((x1, x2) => $"{x1},{x2}"),
                RpcExt         = "",
                RpcType        = "http"
            };

            await RegisterClient(meta, token);
        }