Esempio n. 1
0
 void IHostStartup.Init(IHostBuilderInternal builder)
 {
     builder.ConfigureServices(services => {
         var serviceProvider = services.AddHttpClient().BuildServiceProvider();
         this.httpFactory    = serviceProvider.GetRequiredService <IHttpClientFactory>();
     });
 }
Esempio n. 2
0
        internal static void Init(IObjectService objectService, IHostBuilderInternal builder)
        {
            if (initialized)          //保证只初始化一次
            {
                return;
            }
            initialized = true;

            var coreAttributes = objectService.AsObjectServiceInternal().CoreAttributes;

            if (coreAttributes.TryGetValue(typeof(HostStartupAttribute), out var list))
            {
                var startupTypes = list.OrderByDescending(x => x.Priority).Select(x => x.OwnerType).ToArray();
                foreach (var type in startupTypes)
                {
                    var startup = objectService.GetOrCreateObject(type) as IHostStartup;
                    startup?.Init(builder);
                }
            }
        }
Esempio n. 3
0
        public void Init(IHostBuilderInternal builder)
        {
            if (!(builder.GetBuilderWrapper() is IWebHostBuilder hostBuilder))
            {
                return;
            }

            var serverUrls = hostBuilder.GetSetting(WebHostDefaults.ServerUrlsKey);

            if (!string.IsNullOrEmpty(serverUrls))
            {
                var urls = serverUrls.Split(';');
                Uri uri  = null;
                foreach (var url in urls)
                {
                    if (url.Contains("*"))                     // http://*:5000
                    {
                        var fakeurl = url.Replace('*', '_');
                        if (Uri.TryCreate(fakeurl, UriKind.Absolute, out var uri1))
                        {
                            uri = uri1;
                            break;
                        }
                    }
                    else
                    {
                        if (Uri.TryCreate(url, UriKind.Absolute, out var uri1))
                        {
                            if (!uri1.IsLoopback)
                            {
                                uri = uri1;
                            }
                        }
                    }
                }
                if (uri != null)
                {
                    this.Port = uri.Port;
                    if (uri.Host != "_")
                    {
                        this.Host = uri.Host;
                    }
                }
            }

            var coreAttributes = this.ObjectService.AsObjectServiceInternal().CoreAttributes;

            if (coreAttributes.TryGetValue(typeof(MiddlewareAttribute), out var list))
            {
                this.MiddlewareTypes = list.OrderByDescending(x => x.Priority).Select(x => x.OwnerType).ToArray();
            }

            builder.ConfigureServices(services => {
                //把自己加进去
                services.AddSingleton <IStartupFilter>(this);

                var middlewares = this.MiddlewareTypes;
                if (middlewares != null && middlewares.Length > 0)
                {
                    foreach (var middleware in middlewares)
                    {
                        services.AddSingleton(middleware);
                    }
                }
            });
        }
Esempio n. 4
0
 public void Init(IHostBuilderInternal builder)
 {
     builder.ConfigureServices(services => {
         services.AddHostedService <ServiceRunning>();
     });
 }