Ejemplo n.º 1
0
        private static void RunInServiceFabric(FabricContainer container)
        {
            //string clientCertThumb = "71DE04467C9ED0544D021098BCD44C71E183414E";
            //string serverCertThumb = "A8136758F4AB8962AF2BF3F27921BE1DF67F4326";
            //string CommonName = "www.clustername.westus.azure.com";
            //string connection = "sf-gateway-test.westeurope.cloudapp.azure.com:19000";

            //var xc = GetCredentials(clientCertThumb, serverCertThumb, CommonName);
            //var fc = new FabricClient(xc, connection);

            //try
            //{
            //    var ret = fc.ClusterManager.GetClusterManifestAsync().Result;
            //    Console.WriteLine(ret.ToString());
            //}
            //catch (Exception e)
            //{
            //    Console.WriteLine("Connect failed: {0}", e.Message);
            //}



            container.WithKestrelHosting <Startup>("S-Innovations.ServiceFabricGateway.ExplorerType", ConfigureGateways);

            Thread.Sleep(Timeout.Infinite);
        }
Ejemplo n.º 2
0
        public static void Main(string[] args)
        {
            var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

            var config = new ConfigurationBuilder()
                         .SetBasePath(Directory.GetCurrentDirectory())
                         .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                         .AddJsonFile($"appsettings.{environmentName}.json", optional: true)
                         .AddEnvironmentVariables();

            using (var container = new FabricContainer()
                                   .AddOptions()
                                   .UseConfiguration(config) //willl also be set on hostbuilder
                                   .ConfigureSerilogging(logConfiguration =>
                                                         logConfiguration.MinimumLevel.Information()
                                                         .Enrich.FromLogContext()
                                                         .WriteTo.LiterateConsole(outputTemplate: LiterateLogTemplate))
                                   .ConfigureApplicationInsights())
            {
                container.AddNewExtension <LoggingExtension>();



                if (args.Contains("--serviceFabric"))
                {
                    container.ConfigureApplicationStorage();

                    RunInServiceFabric(container);
                }
                else
                {
                    RunOnIIS(container);
                }
            }
        }
Ejemplo n.º 3
0
        public static void Main(string[] args)
        {
            using (var container = new FabricContainer())
            {
                var config = new ConfigurationBuilder()
                             .SetBasePath(Directory.GetCurrentDirectory())
                             .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                             .AddJsonFile($"appsettings.{container.Resolve<IHostingEnvironment>().EnvironmentName}.json", optional: true)
                             .AddEnvironmentVariables();

                container.AddOptions()
                .UseConfiguration(config)        //willl also be set on hostbuilder
                .ConfigureSerilogging(logConfiguration =>
                                      logConfiguration.MinimumLevel.Information()
                                      .Enrich.FromLogContext()
                                      .WriteTo.LiterateConsole(outputTemplate: LiterateLogTemplate))
                .ConfigureApplicationInsights();

                container.Configure <BrandingOptions>("Branding");
                container.Configure <EndpointOptions>("Endpoints");

                container.RegisterInstance(new HttpClient());

                if (args.Contains("--serviceFabric"))
                {
                    RunInServiceFabric(container);
                }
                else
                {
                    RunOnIIS(container);
                }
            }
        }
Ejemplo n.º 4
0
        public static void Main(string[] args)
        {
            //var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");



            using (var container = new FabricContainer())

            {
                var environment = container.Resolve <IHostingEnvironment>();

                var config = new ConfigurationBuilder()
                             .SetBasePath(Directory.GetCurrentDirectory())
                             .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                             .AddJsonFile($"appsettings.{environment.EnvironmentName}.json", optional: true)
                             .AddEnvironmentVariables();

                if (environment.IsDevelopment())
                {
                    config.AddUserSecrets <Startup>();
                }

                container.AddOptions()
                .UseConfiguration(config)              //willl also be set on hostbuilder
                .ConfigureSerilogging(logConfiguration =>
                                      logConfiguration //.MinimumLevel.Information()
                                      .Enrich.FromLogContext()
                                      .WriteTo.LiterateConsole(outputTemplate: LiterateLogTemplate))
                .ConfigureApplicationInsights();


                container.Configure <IdentityServiceOptions>("IdentityService");

                container.RegisterType <CloudStorageAccount>(new ContainerControlledLifetimeManager(), new InjectionFactory((c) =>
                {
                    if (c.IsRegistered <IApplicationStorageService>())
                    {
                        var storage = c.Resolve <IApplicationStorageService>();
                        var token   = storage.GetApplicationStorageSharedAccessSignature().GetAwaiter().GetResult();
                        var name    = storage.GetApplicationStorageAccountNameAsync().GetAwaiter().GetResult();
                        return(new CloudStorageAccount(new StorageCredentials(token), name, null, true));
                    }
                    return(CloudStorageAccount.Parse(c.Resolve <IConfigurationRoot>().GetSection("IdentityService")["StorageAccount"]));
                }));

                if (args.Contains("--serviceFabric"))
                {
                    config.AddServiceFabricConfig("Config"); // Add Service Fabric configuration settings.
                    RunInServiceFabric(container);
                }
                else
                {
                    RunOnIIS(container);
                }
            }
        }
Ejemplo n.º 5
0
        public static void Main(string[] args)
        {
            // var cp = CertificateProvider.GetProvider("BouncyCastle");

            // Setup unhandled exception handlers.
            TaskScheduler.UnobservedTaskException      += TaskScheduler_UnobservedTaskException;
            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            using (var container = new FabricContainer())
            {
                container.AddOptions();
                container.ConfigureSerilogging(logConfiguration =>
                                               logConfiguration.MinimumLevel.Debug()
                                               .Enrich.FromLogContext()
                                               .WriteTo.LiterateConsole(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message}{NewLine}{Exception}{NewLine}")
                                               .WriteTo.ApplicationInsightsTraces(Environment.GetEnvironmentVariable("APPLICATION_INSIGHTS"), Serilog.Events.LogEventLevel.Information));



                container.ConfigureApplicationStorage();


                var keyvaultINfo = container.Resolve <KeyVaultSecretManager>();

                container.UseConfiguration(new ConfigurationBuilder()
                                           .AddAzureKeyVault(keyvaultINfo.KeyVaultUrl, keyvaultINfo.Client, keyvaultINfo));



                container.Configure <KeyVaultOptions>("KeyVault");

                container.WithLetsEncryptService(new LetsEncryptServiceOptions
                {
                    BaseUri = Certes.Acme.WellKnownServers.LetsEncryptV2.AbsoluteUri// "https://acme-v01.api.letsencrypt.org"
                });

                container.WithStatelessService <NginxGatewayService>("GatewayServiceType");
                container.WithStatelessService <ApplicationStorageService>("ApplicationStorageServiceType");
                container.WithStatelessService <KeyVaultService>("KeyVaultServiceType");
                container.WithStatelessService <ResourceProviderService>("ResourceProviderServiceType");


                container.WithStatefullService <GatewayManagementService>("GatewayManagementServiceType");


                Thread.Sleep(Timeout.Infinite);
            }
        }
Ejemplo n.º 6
0
        public void WithoutAspneteCore()
        {
            var container = new FabricContainer();

            container.ConfigureSerilogging(logConfiguration =>
                                           logConfiguration.MinimumLevel.Information()
                                           .Enrich.FromLogContext()
                                           .WriteTo.LiterateConsole(outputTemplate: LiterateLogTemplate));

            var first = container.Resolve <ILoggerFactory>(); //Singleton / containercontrolled lifetime.

            var child = container.CreateChildContainer();

            var second = child.Resolve <ILoggerFactory>();

            Assert.AreEqual(first, second);

            child.Dispose();

            //Debugged, logger factory is not disposed.
        }
Ejemplo n.º 7
0
        public static void Main(string[] args)
        {
            // var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");



            using (var container = new FabricContainer())
            {
                var config = new ConfigurationBuilder()
                             .SetBasePath(Directory.GetCurrentDirectory())
                             .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                             .AddJsonFile($"appsettings.{container.Resolve<IHostingEnvironment>().EnvironmentName}.json", optional: true)
                             .AddEnvironmentVariables();

                container.AddOptions()
                .UseConfiguration(config)       //willl also be set on hostbuilder
                .ConfigureSerilogging(logConfiguration =>
                                      logConfiguration.MinimumLevel.Information()
                                      .Enrich.FromLogContext()
                                      .WriteTo.LiterateConsole(outputTemplate: LiterateLogTemplate))
                .ConfigureApplicationInsights();

                container.Configure <EndpointsOptions>("Endpoints");
                container.Configure <OidcClientConfiguration>("OidcClientConfiguration");
                container.Configure <ReverseProxyOptions>("ReverseProxySettings");

                if (args.Contains("--serviceFabric"))
                {
                    config.AddServiceFabricConfig("Config"); // Add Service Fabric configuration settings.
                    RunInServiceFabric(container);
                }
                else
                {
                    RunOnIIS(container);
                }
            }
        }
Ejemplo n.º 8
0
        public async Task WithAspNetCore()
        {
            var container = new FabricContainer();

            container.ConfigureSerilogging(logConfiguration =>
                                           logConfiguration.MinimumLevel.Information()
                                           .Enrich.FromLogContext()
                                           .WriteTo.LiterateConsole(outputTemplate: LiterateLogTemplate));



            {
                var child = container.CreateChildContainer();
                child.RegisterType <ILoggerFactory, LoggerFactory>(new ContainerControlledLifetimeManager());

                var childchi = child.CreateChildContainer();
                var first    = childchi.Resolve <ILoggerFactory>(); //Singleton / containercontrolled lifetime.

                var second = child.Resolve <ILoggerFactory>();



                Assert.AreEqual(first, second);



                // But IloggerFactory is not disposed at this point.



                var builder = new WebHostBuilder()
                              .UseKestrel()
                              .ConfigureServices((b, s) =>
                {
                    s.AddSingleton(child);
                })
                              .UseUnityServiceProvider(child)
                              .UseStartup <TestStartup>()
                              .UseContentRoot(Directory.GetCurrentDirectory()).Build();



                //But when we dispose this, then ilogger factory will also get disposed. Why here but not above.
                (builder.Services as IDisposable).Dispose();


                //ILoggerFactory is now disposed.
            }


            {
                var child = container.CreateChildContainer();

                //Ilogger factory is the same, and therefore disposed and now this will fail.

                var builder = new WebHostBuilder()
                              .UseKestrel()
                              .ConfigureServices((b, s) =>
                {
                    s.AddSingleton(child);
                })
                              .UseUnityServiceProvider(child)
                              .UseStartup <TestStartup>()
                              .UseContentRoot(Directory.GetCurrentDirectory()).Build();

                builder.Dispose();
            }
        }