Beispiel #1
0
 public AccountController(
     UserResolver <TUser> userResolver,
     UserManager <TUser> userManager,
     SignInManager <TUser> signInManager,
     IIdentityServerInteractionService interaction,
     IClientStore clientStore,
     IAuthenticationSchemeProvider schemeProvider,
     IEventService events,
     IEmailSender emailSender,
     IGenericControllerLocalizer <AccountController <TUser, TKey> > localizer,
     LoginConfiguration loginConfiguration,
     RegisterConfiguration registerConfiguration)
 {
     _userResolver          = userResolver;
     _userManager           = userManager;
     _signInManager         = signInManager;
     _interaction           = interaction;
     _clientStore           = clientStore;
     _schemeProvider        = schemeProvider;
     _events                = events;
     _emailSender           = emailSender;
     _localizer             = localizer;
     _loginConfiguration    = loginConfiguration;
     _registerConfiguration = registerConfiguration;
 }
        public static RegisterConfiguration GetServiceRegisterConfiguration(IConfig config, RegisterOptions options)
        {
            RegisterConfiguration registerConfig = new RegisterConfiguration();

            registerConfig.Name = config?.Get <string>("kumuluzee.name");
            if (string.IsNullOrWhiteSpace(registerConfig.Name))
            {
                registerConfig.Name = "service";
            }
            registerConfig.EnvName = config?.Get <string>("kumuluzee.env.name");
            if (string.IsNullOrWhiteSpace(registerConfig.EnvName))
            {
                registerConfig.EnvName = "dev";
            }
            registerConfig.Protocol = config?.Get <string>("kumuluzee.discovery.consul.protocol");
            if (string.IsNullOrWhiteSpace(registerConfig.Protocol))
            {
                registerConfig.Protocol = "http";
            }

            registerConfig.Singleton = options.Singleton;
            registerConfig.Discovery.PingInterval = config?.Get <int?>("kumuluzee.discovery.ping-interval") ?? 20;
            registerConfig.Discovery.TTL          = config?.Get <int?>("kumuluzee.discovery.ttl") ?? 30;
            registerConfig.Server.Address         = config?.Get <string>("kumuluzee.server.http.address");
            registerConfig.Server.BaseUrl         = config?.Get <string>("kumuluzee.server.base-url");
            registerConfig.Server.Port            = config?.Get <int?>("kumuluzee.server.http.port") ?? 5000;
            registerConfig.Version = config?.Get <string>("kumuluzee.version") ?? "1.0.0";
            registerConfig.CriticalServiceUnregisterTime = config?.Get <int?>("kumuluzee.discovery.consul.deregister-critical-service-after-s") ?? 60;

            if (!string.IsNullOrWhiteSpace(options.ServiceName))
            {
                registerConfig.Name = options.ServiceName;
            }
            if (options.PingInterval > 0)
            {
                registerConfig.Discovery.PingInterval = options.PingInterval;
            }
            if (options.TTL > 0)
            {
                registerConfig.Discovery.TTL = options.TTL;
            }
            if (!string.IsNullOrWhiteSpace(options.Version))
            {
                registerConfig.Version = options.Version;
            }
            if (!string.IsNullOrWhiteSpace(options.Environment))
            {
                registerConfig.EnvName = options.Environment;
            }

            return(registerConfig);
        }
 public ConsulServiceInstance(RegisterConfiguration regConfig)
 {
     ServiceName = $"{regConfig.EnvName}-{regConfig.Name}";
     Environment = regConfig.EnvName;
     Id          = $"{regConfig.Name}-{Guid.NewGuid()}";
     Version     = regConfig.Version;
     VersionTag  = $"version={regConfig.Version}";
     Protocol    = regConfig.Protocol;
     Port        = regConfig.Server.Port;
     Address     = regConfig.Server.Address;
     BaseUrl     = regConfig.Server.BaseUrl;
     TTL         = regConfig.Discovery.TTL;
     CriticalServiceUnregisterTime = regConfig.CriticalServiceUnregisterTime;
     IsSingleton = regConfig.Singleton;
 }
 public AccountApiController(
     UserManager <TUser> userManager,
     SignInManager <TUser> signInManager,
     IEventService events,
     IEmailSender emailSender,
     RegisterConfiguration registerConfiguration,
     LoginConfiguration loginConfiguration,
     IGenericControllerLocalizer <AccountApiController <TUser, TKey> > localizer,
     SimpleEmailRenderer emailRenderer)
 {
     UserManager           = userManager;
     SignInManager         = signInManager;
     Events                = events;
     EmailSender           = emailSender;
     LoginConfiguration    = loginConfiguration;
     RegisterConfiguration = registerConfiguration;
     Localizer             = localizer;
     EmailRenderer         = emailRenderer;
 }
Beispiel #5
0
        /// <summary>
        /// 服务注册
        /// </summary>
        /// <param name="registerConfiguration">需要注册的参数</param>
        /// <returns></returns>
        public Task <WriteResult> ServiceRegister(RegisterConfiguration registerConfiguration)
        {
            if (registerConfiguration == null)
            {
                throw new ArgumentNullException(nameof(registerConfiguration));
            }

            //健康检查
            var httpCheck = new AgentServiceCheck()
            {
                DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(10), //服务启动多久后注册
                Interval = TimeSpan.FromSeconds(10),                       //健康检查时间间隔,或者称为心跳间隔
                TCP      = registerConfiguration.TcpHealthCheck?.ToString(),
                Status   = HealthStatus.Passing,
                Timeout  = TimeSpan.FromSeconds(5)
            };

            //服务id
            var serverId = "";

            if (!string.IsNullOrWhiteSpace(registerConfiguration.ServerId))
            {
                serverId = registerConfiguration.ServerId;
            }
            else
            {
                serverId = env.ApplicationName + "-" + Guid.NewGuid().ToString().Replace("-", "");
            }

            var registration = new AgentServiceRegistration()
            {
                Check   = httpCheck,
                ID      = serverId,
                Name    = registerConfiguration.ServerName,
                Address = registerConfiguration.Address?.Address.ToString(),
                Port    = registerConfiguration.Address.Port,
                Tags    = registerConfiguration.Tags?.ToArray()//添加 urlprefix-/servicename 格式的 tag 标签,以便 Fabio 识别
            };

            return(consulClient.Agent.ServiceRegister(registration));
        }
Beispiel #6
0
        /// <summary>
        /// 服务注册
        /// </summary>
        /// <param name="consul"></param>
        public static void UseServiceRegister(this IServiceCollection services, RegisterConfiguration registerConfiguration)
        {
            var serviceRegisterManage = services.BuildServiceProvider().GetRequiredService <IServiceRegisterManage>();

            serviceRegisterManage.ServiceRegister(registerConfiguration);
        }