public static IServiceCollection AddConsul(this IServiceCollection services) { services.AddTransient(sp => { var configuration = sp.GetRequiredService <IConfiguration>(); var consulOptions = new ConsulOptions(); var section = configuration.GetSection(ConsulSectionName); configuration.Bind(ConsulSectionName, consulOptions); return(consulOptions); }); ConsulOptions options; using (var provider = services.BuildServiceProvider()) options = provider.GetService <ConsulOptions>(); services.AddTransient <IConsulServicesRegistry, ConsulServicesRegistry>(); services.AddTransient <ConsulServiceDiscoveryMessageHandler>(); return(services.AddSingleton <IConsulClient>(c => new ConsulClient(cfg => { if (!string.IsNullOrEmpty(options.Url)) { cfg.Address = new Uri(options.Url); } }))); }
public ConsulServiceDiscoveryMessageHandler(IConsulServicesRegistry servicesRegistry, ConsulOptions options, string serviceName = null, bool?overrideRequestUri = null) { if (string.IsNullOrWhiteSpace(options.Url)) { throw new InvalidOperationException("Consul URL was not provided."); } _servicesRegistry = servicesRegistry; _options = options; _serviceName = serviceName; _overrideRequestUri = overrideRequestUri; }