diff --git a/shared/EShopOnAbp.Shared.Hosting.Microservices/ConsulConfigurationExtensions.cs b/shared/EShopOnAbp.Shared.Hosting.Microservices/ConsulConfigurationExtensions.cs index 5d54913a..16c795c3 100644 --- a/shared/EShopOnAbp.Shared.Hosting.Microservices/ConsulConfigurationExtensions.cs +++ b/shared/EShopOnAbp.Shared.Hosting.Microservices/ConsulConfigurationExtensions.cs @@ -3,6 +3,7 @@ using Consul; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; namespace EShopOnAbp.Shared.Hosting.Microservices { @@ -20,13 +21,13 @@ namespace EShopOnAbp.Shared.Hosting.Microservices public static string UseConsul(this IApplicationBuilder app) { + var appLifetime = app.ApplicationServices.GetService(); using (var scope = app.ApplicationServices.CreateScope()) { var configuration = scope.ServiceProvider.GetService(); bool isEnabled = configuration.GetValue("Consul:Enabled"); string serviceName = configuration.GetValue("Consul:Service"); - string host = configuration.GetValue("Consul:Host"); var appString = configuration.GetValue("App:SelfUrl"); Uri appUrl = new Uri(appString, UriKind.Absolute); @@ -38,7 +39,7 @@ namespace EShopOnAbp.Shared.Hosting.Microservices var client = scope.ServiceProvider.GetService(); - var consulServiceRistration = new AgentServiceRegistration + var consulServiceRegistration = new AgentServiceRegistration { Name = serviceName, ID = consulServiceID, @@ -46,7 +47,11 @@ namespace EShopOnAbp.Shared.Hosting.Microservices Port = appUrl.Port }; - client.Agent.ServiceRegister(consulServiceRistration); + client.Agent.ServiceRegister(consulServiceRegistration); + appLifetime.ApplicationStopping.Register(() => + { + client.Agent.ServiceDeregister(consulServiceRegistration.ID); + }); return consulServiceID; }