コード例 #1
0
 public static void Init()
 {
     if (WcfServiceAddress.IndexOf("Localhost", StringComparison.Ordinal) != -1)
     {
         var ips = IpExtensions.GetInternetIpsWithoutVirtual();
         if (ips.Count >= 1)
         {
             Settings.Default.WcfServiceAddress = WcfServiceAddress.Replace("Localhost", ips[0]);
         }
     }
 }
コード例 #2
0
ファイル: AddressConverters.cs プロジェクト: yfer/akka.net
        public static Address ToAddress(this EndPoint endpoint, ActorSystem system)
        {
            var dns = endpoint as DnsEndPoint;

            if (dns != null)
            {
                return(new Address(AkkaIOTransport.Protocal, system.Name, dns.Host, dns.Port));
            }
            var ip = endpoint as IPEndPoint;

            if (ip != null)
            {
                return(new Address(AkkaIOTransport.Protocal, system.Name, IpExtensions.MapToIPv4(ip.Address).ToString(), ip.Port));
            }
            throw new ArgumentException("endpoint");
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="app"></param>
        /// <param name="applicationLifetime"></param>
        /// <returns></returns>
        public static IApplicationBuilder RegisterConsul(this IApplicationBuilder app, IHostApplicationLifetime applicationLifetime)
        {
            //获取server ip address 指定ip和端口的才可以获取
            var features  = app.Properties["server.Features"] as FeatureCollection;
            var addresses = features?.Get <IServerAddressesFeature>();
            var address   = addresses?.Addresses.First();
            //建立连接的client

            var ip             = IpExtensions.GetLocalIPv4(NetworkInterfaceType.Wireless80211);
            var client         = app.ApplicationServices.GetRequiredService <IConsulClient>();
            var consulConfig   = app.ApplicationServices.GetRequiredService <IOptions <ConsulConfig> >();
            var loggingFactory = app.ApplicationServices.GetRequiredService <ILoggerFactory>();
            var logger         = loggingFactory.CreateLogger <IApplicationBuilder>();

            var uri          = new Uri(address);
            var healthchecks = new AgentServiceCheck()
            {
                Interval = TimeSpan.FromMinutes(1),
                HTTP     = $"{uri.Scheme}://{uri.Host}:{uri.Port}/api/health/status"
            };
            var register = new AgentServiceRegistration
            {
                ID      = consulConfig.Value.ServiceId,
                Name    = consulConfig.Value.ServiceName,
                Address = $"{uri.Scheme}://{uri.Host}",
                Port    = uri.Port,
                Check   = healthchecks,
                Tags    = new[] { "webapi" }
            };

            logger.LogInformation("Register with consul");
            client.Agent.ServiceRegister(register).Wait();

            //  client.Agent.ServiceDeregister(register.ID).Wait();
            //注入 应用生命周期结束的回调
            applicationLifetime.ApplicationStopping.Register(() =>
            {
                logger.LogInformation("DeRegister with consul");
                client.Agent.ServiceDeregister(register.ID).Wait();
            });
            return(app);
        }