private async Task RegisterServiceInstanceAsync(CancellationToken cancellationToken) { if (RuntimeEnvironment.ServiceId.HasValue && !RuntimeEnvironment.ServiceInstanceId.HasValue) { var properties = new AgentOsInfoRequest { HostName = DnsHelpers.GetHostName(), IpAddress = DnsHelpers.GetIpV4s(), OsName = PlatformInformation.GetOSName(), ProcessNo = Process.GetCurrentProcess().Id, Language = "dotnet" }; var request = new ServiceInstanceRequest { ServiceId = RuntimeEnvironment.ServiceId.Value, InstanceUUID = RuntimeEnvironment.InstanceId.ToString("N"), Properties = properties }; var value = await Polling(3, () => _serviceRegister.RegisterServiceInstanceAsync(request, cancellationToken), cancellationToken); if (value.HasValue && RuntimeEnvironment is RuntimeEnvironment) { var environment = (RuntimeEnvironment)RuntimeEnvironment; environment.ServiceInstanceId = value; Logger.Information($"Registered ServiceInstance[Id={environment.ServiceInstanceId.Value}]."); } } }