Esempio n. 1
0
        private void RunWebHost()
        {
            try
            {
                _logger.Info($"{nameof(AspNetHttp)}.{nameof(RunWebHost)}",
                             new LogItem("Event", "Building ASP.NET Web Host"));
                _webHost = CreateWebHostBuilder().Build();
                _webHost.Start();

                foreach (var address in _webHost.ServerFeatures.Get <IServerAddressesFeature>().Addresses)
                {
                    var url = new Uri(address);
                    _logger.Info($"{nameof(AspNetHttp)}.{nameof(RunWebHost)}",
                                 new LogItem("Event", "WebHost started"), new LogItem("Url", url.ToString()));
                }

                _webHost.WaitForShutdown();
            }
            catch (Exception e)
            {
                _logger.Fatal($"{nameof(AspNetHttp)}.{nameof(RunWebHost)}",
                              new LogItem("Event", "Unhandled exception"),
                              new LogItem("Exception", e.Message),
                              new LogItem("StackTrace", e.StackTrace));
            }
        }
Esempio n. 2
0
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddProvider(new RookLoggerProvider(_container));

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseMiddleware <ExceptionHandlingMiddleware>();
                app.UseHsts();
            }

            var enableSubdomainCorsPolicy         = _configurationManager.Get("EnableSubdomainCorsPolicy", false);
            var allowedSubdomainCorsPolicyOrigins = _configurationManager.Get("AllowedSubdomainCorsPolicyOrigins", string.Empty);

            _logger.Info($"{nameof(Startup)}.{nameof(Configure)}", new LogItem("EnableSubdomainCorsPolicy", enableSubdomainCorsPolicy.ToString()));
            if (enableSubdomainCorsPolicy)
            {
                _logger.Info($"{nameof(Startup)}.{nameof(Configure)}", new LogItem("AllowedSubDomainCorsPolicyOrigins", allowedSubdomainCorsPolicyOrigins));
                var allowedOriginsString = allowedSubdomainCorsPolicyOrigins;

                var allowedOrigins = allowedOriginsString.Split(';');

                app.UseCors(policy => policy.WithOrigins(allowedOrigins).SetIsOriginAllowedToAllowWildcardSubdomains().AllowAnyHeader().AllowAnyMethod());
            }

            app.UseHealthChecks("/health");
            app.UseHttpsRedirection();
            app.Use(async(context, next) =>
            {
                _logger.Trace(typeof(Startup) + ".Configure()", new LogItem("Action", "Middleware Initiated"));

                _logger.Trace(typeof(Startup) + ".Configure()", new LogItem("Action", "Middleware Outputting Request Headers"));

                foreach (var header in context.Request.Headers)
                {
                    _logger.Trace(typeof(Startup) + ".Configure()", new LogItem("Action", "OutputHeader"), new LogItem(header.Key, header.Value));
                }

                _logger.Trace(typeof(Startup) + ".Configure()", new LogItem("Action", "Middleware Header Output Complete"));

                _logger.Trace(typeof(Startup) + ".Configure()", new LogItem("Action", "Middleware Pipeline Begin"));

                await next.Invoke();

                _logger.Trace(typeof(Startup) + ".Configure()", new LogItem("Action", "Middleware Pipeline Complete"));

                _logger.Trace(typeof(Startup) + ".Configure()", new LogItem("Action", "Middleware Outputting Response Headers"));

                foreach (var header in context.Response.Headers)
                {
                    _logger.Trace("HttpContext.Response Header", new LogItem(header.Key, header.Value));
                }

                _logger.Trace(typeof(Startup) + ".Configure()", new LogItem("Action", "Middleware Header Output Complete"));
            });

            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.RoutePrefix = "";
                c.SwaggerEndpoint("/swagger/v1/swagger.json", _entryAssemblyName.Version.ToString());
            });
            app.UseAuthentication();
            app.UseMvc();
        }