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)); } }
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(); }