Copy using Consul;
var builder = WebApplication.CreateBuilder(args);
// 註冊 Consul 客戶端
builder.Services.AddSingleton<IConsulClient, ConsulClient>(p => new ConsulClient(consulConfig =>
{
// 設定 Consul 位址
consulConfig.Address = new Uri("http://localhost:8500");
}));
// 註冊 WebAPI 服務
var app = builder.Build();
app.Lifetime.ApplicationStarted.Register(() =>
{
var consulClient = app.Services.GetRequiredService<IConsulClient>();
// 註冊服務到 Consul
var registration = new AgentServiceRegistration
{
ID = "ConsulDemoAPI",
Name = "ConsulDemoAPI",
Address = "localhost",
Port = 7240, // 設定 WebAPI 埠號
Check = new AgentServiceCheck
{
HTTP = "http://localhost:7240/api/health", // 健康檢查的 URL
Interval = TimeSpan.FromSeconds(10), // 檢查間隔
Timeout = TimeSpan.FromSeconds(5) // 超時設定
}
};
// 註冊服務
consulClient.Agent.ServiceRegister(registration).GetAwaiter().GetResult();
});
app.Lifetime.ApplicationStopping.Register(() =>
{
var consulClient = app.Services.GetRequiredService<IConsulClient>();
// 取消註冊服務
consulClient.Agent.ServiceDeregister("ConsulDemoAPI").GetAwaiter().GetResult();
});
app.MapControllers();
app.Run();