using System.Configuration; using System.Web; using Hangfire; using IdentityServer3.AccessTokenValidation; using Kreta.BusinessLogic; using Kreta.Core.FeatureToggle; using Kreta.Ellenorzo.WebApi; using Kreta.Web.Logging.Logger; using Microsoft.Owin; using Owin; using SimpleInjector; using SimpleInjector.Integration.WebApi; using SimpleInjector.Lifestyles; using HangfireGlobalConfiguration = Hangfire.GlobalConfiguration; using HttpGlobalConfiguration = System.Web.Http.GlobalConfiguration; [assembly: OwinStartup(typeof(Startup))] namespace Kreta.Ellenorzo.WebApi { public static class Startup { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2000:Dispose objects before losing scope")] public static void Configuration(IAppBuilder appBuilder) { HttpGlobalConfiguration.Configure(WebApiConfig.Register); _ = log4net.Config.XmlConfigurator.Configure(); _ = HangfireGlobalConfiguration.Configuration.UseSqlServerStorage("HangfireConnectionString"); var container = new Container(); container.Options.DefaultScopedLifestyle = new AsyncScopedLifestyle(); container.InjectMobileBusinessLogic(); container.Register(() => FeatureContext.Instance, Lifestyle.Singleton); container.Register(() => TraceLoggerFactory.Create(HttpContext.Current), Lifestyle.Scoped); container.RegisterWebApiControllers(HttpGlobalConfiguration.Configuration); container.Verify(); HttpGlobalConfiguration.Configuration.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container); _ = appBuilder .UseIdentityServerBearerTokenAuthentication( new IdentityServerBearerTokenAuthenticationOptions { ValidationMode = ValidationMode.Local, Authority = ConfigurationManager.AppSettings["idp:Authority"], RequiredScopes = ConfigurationManager.AppSettings["idp:RequiredScopes"].Split(';') }) .UseWebApi(HttpGlobalConfiguration.Configuration); } } }