private static void RegisterDependencies(HttpConfiguration httpConfiguration, IConfigurationService configuration, Action <ContainerBuilder> register) { var builder = new ContainerBuilder(); DefaultContainerBuilder.Register(builder, configuration); SupportContainerBuilder.Register(builder, SupportEnvironment.WebApp); builder.RegisterType <NullPackageProcessor>() .As <IPackageProcessor>(); builder.RegisterType <DataController>(); builder.RegisterType <PackagesController>(); builder.RegisterWebApiFilterProvider(httpConfiguration); builder.RegisterType <AuthenticationFilter>() .WithParameter(TypedParameter.From <AuthenticatedAreaAttribute>(null)) .AsWebApiAuthenticationFilterFor <DataController>(); //var metadataAreaAttribute = new AuthenticatedAreaAttribute( // AuthenticatedArea.None, "feedName"); //builder.RegisterType<AuthenticationFilter>() // .WithParameter(TypedParameter.From(metadataAreaAttribute)) // .AsWebApiAuthenticationFilterFor<ODataMetadataController>(); var queryingAreaAttribute = new AuthenticatedAreaAttribute( AuthenticatedArea.Querying, "feedName"); builder.RegisterType <AuthenticationFilter>() .WithParameter(TypedParameter.From(queryingAreaAttribute)) .AsWebApiAuthenticationFilterFor <ODataController>(); builder.RegisterType <AuthenticationFilter>() .WithParameter(TypedParameter.From(queryingAreaAttribute)) .AsWebApiAuthenticationFilterFor <PackagesController>(); builder.RegisterType <AuthenticationNoneFilter>() .Keyed <IAutofacAuthenticationFilter>(AuthenticationMode.None); builder.RegisterType <AuthenticationBasicFilter>() .Keyed <IAutofacAuthenticationFilter>(AuthenticationMode.Basic); builder.RegisterType <AuthenticationNuGetApiKeyFilter>() .Keyed <IAutofacAuthenticationFilter>(AuthenticationMode.NuGetApiKey); register?.Invoke(builder); var container = builder.Build(); httpConfiguration.DependencyResolver = new AutofacWebApiDependencyResolver(container); }
static void Main(string[] args) { Trace.Listeners.Add(new ConsoleTraceListener()); foreach (var assembly in typeof(PackageProcessor).Assembly.GetReferencedAssemblies()) { Trace.WriteLine(assembly.FullName); } var cancelSource = new CancellationTokenSource(); System.Console.CancelKeyPress += (o, e) => { cancelSource.Cancel(); e.Cancel = true; }; var shutdownWatcher = new WebJobsShutdownWatcher(); var shutdownSource = CancellationTokenSource.CreateLinkedTokenSource(new[] { shutdownWatcher.Token, cancelSource.Token }); var configuration = new DefaultConfigurationService(); var builder = new ContainerBuilder(); DefaultContainerBuilder.Register(builder, configuration); SupportContainerBuilder.Register(builder, SupportEnvironment.WebJob); EmailContainerBuilder.Register(builder); PackageProcessorContainerBuilder.Register(builder); var container = builder.Build(); var support = container.Resolve <ISupportConfiguration>(); if (!string.IsNullOrWhiteSpace(support.InsightsInstrumentationKey)) { TelemetryConfiguration.Active.InstrumentationKey = support.InsightsInstrumentationKey; } var scheduler = container.Resolve <ISchedulerService>(); scheduler.ListenAndProcess(shutdownSource.Token); }
protected override void OnStart(string[] args) { Trace.Listeners.Add(new ConsoleTraceListener()); foreach (var assembly in typeof(PackageProcessor).Assembly.GetReferencedAssemblies()) { Trace.WriteLine(assembly.FullName); } _stopSource = new CancellationTokenSource(); var configuration = new DefaultConfigurationService(); var builder = new ContainerBuilder(); DefaultContainerBuilder.Register(builder, configuration); SupportContainerBuilder.Register(builder, SupportEnvironment.WebJob); PackageProcessorContainerBuilder.Register(builder); var container = builder.Build(); var support = container.Resolve <ISupportConfiguration>(); var scheduler = container.Resolve <ISchedulerService>(); Task.Run(() => { int i = 0; while (!_stopSource.IsCancellationRequested) { try { scheduler.ListenAndProcess(_stopSource.Token); } catch { i++; if (i > 10) { Stop(); } } } }); }