Ejemplo n.º 1
0
 public WcfProcessor(IDetector detector, IDependencyValidator dependencyValidator, IConfigFileAppender fileAppender, IFileMover assemblyMover)
 {
     this.detector            = detector;
     this.dependencyValidator = dependencyValidator;
     this.fileAppender        = fileAppender;
     this.assemblyMover       = assemblyMover;
 }
        public PowerShellProjectPackage()
        {
            var componentModel = (IComponentModel)GetGlobalService(typeof(SComponentModel));

            _validator = (IDependencyValidator)componentModel.GetService <IDependencyValidator>();

            UiContextUtilities.ActivateUiContext(UiContextUtilities.CreateUiContext(PowerShellTools.Common.Constants.PowerShellProjectUiContextGuid));
        }
        public static IHostBuilder AddWebScriptHost(this IHostBuilder builder, IServiceProvider rootServiceProvider,
                                                    IServiceScopeFactory rootScopeFactory, ScriptApplicationHostOptions webHostOptions, Action <IWebJobsBuilder> configureWebJobs = null)
        {
            ILoggerFactory       configLoggerFactory = rootServiceProvider.GetService <ILoggerFactory>();
            IDependencyValidator validator           = rootServiceProvider.GetService <IDependencyValidator>();
            IMetricsLogger       metricsLogger       = rootServiceProvider.GetService <IMetricsLogger>();

            builder.UseServiceProviderFactory(new JobHostScopedServiceProviderFactory(rootServiceProvider, rootScopeFactory, validator))
            .ConfigureServices(services =>
            {
                // register default configuration
                // must happen before the script host is added below
                services.ConfigureOptions <HttpOptionsSetup>();
                services.ConfigureOptions <CustomHttpHeadersOptionsSetup>();
                services.ConfigureOptions <HostHstsOptionsSetup>();
                services.ConfigureOptions <HostCorsOptionsSetup>();
                services.ConfigureOptions <CorsOptionsSetup>();
                services.ConfigureOptions <AppServiceOptionsSetup>();
                services.ConfigureOptions <HostEasyAuthOptionsSetup>();
            })
            .AddScriptHost(webHostOptions, configLoggerFactory, metricsLogger, webJobsBuilder =>
            {
                webJobsBuilder.AddAzureStorageCoreServices();

                configureWebJobs?.Invoke(webJobsBuilder);

                ConfigureRegisteredBuilders(webJobsBuilder, rootServiceProvider);

                webJobsBuilder.Services.AddSingleton <IHttpRoutesManager, WebScriptHostHttpRoutesManager>();
            })
            .ConfigureAppConfiguration(configurationBuilder =>
            {
                ConfigureRegisteredBuilders(configurationBuilder, rootServiceProvider);
            })
            .ConfigureLogging(loggingBuilder =>
            {
                loggingBuilder.Services.AddSingleton <ILoggerFactory, ScriptLoggerFactory>();

                loggingBuilder.AddWebJobsSystem <SystemLoggerProvider>();
                loggingBuilder.Services.AddSingleton <ILoggerProvider, AzureMonitorDiagnosticLoggerProvider>();

                ConfigureRegisteredBuilders(loggingBuilder, rootServiceProvider);
            })
            .ConfigureServices(services =>
            {
                var webHostEnvironment = rootServiceProvider.GetService <IScriptWebHostEnvironment>();
                var environment        = rootServiceProvider.GetService <IEnvironment>();

                if (FunctionsSyncManager.IsSyncTriggersEnvironment(webHostEnvironment, environment))
                {
                    services.AddSingleton <IHostedService, FunctionsSyncService>();
                }

                if (!environment.IsV2CompatibilityMode())
                {
                    new FunctionsMvcBuilder(services).AddNewtonsoftJson();
                }

                services.AddSingleton <HttpRequestQueue>();
                services.AddSingleton <IHostLifetime, JobHostHostLifetime>();
                services.AddSingleton <IWebJobsExceptionHandler, WebScriptHostExceptionHandler>();

                services.AddSingleton <DefaultScriptWebHookProvider>();
                services.TryAddSingleton <IScriptWebHookProvider>(p => p.GetService <DefaultScriptWebHookProvider>());
                services.TryAddSingleton <IWebHookProvider>(p => p.GetService <DefaultScriptWebHookProvider>());
                services.TryAddSingleton <IJobHostMiddlewarePipeline, DefaultMiddlewarePipeline>();
                if (environment.IsLinuxConsumption())
                {
                    services.TryAddEnumerable(ServiceDescriptor.Singleton <IJobHostHttpMiddleware, JobHostEasyAuthMiddleware>());
                }
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IJobHostHttpMiddleware, CustomHttpHeadersMiddleware>());
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IJobHostHttpMiddleware, HstsConfigurationMiddleware>());
                if (environment.IsLinuxConsumption())
                {
                    services.AddSingleton <ICorsMiddlewareFactory, CorsMiddlewareFactory>();
                    services.TryAddEnumerable(ServiceDescriptor.Singleton <IJobHostHttpMiddleware, JobHostCorsMiddleware>());
                }
                services.TryAddSingleton <IScaleMetricsRepository, TableStorageScaleMetricsRepository>();

                if (environment.IsWindowsAzureManagedHosting() || environment.IsLinuxAzureManagedHosting())
                {
                    // Enable breaking change analysis only when hosted in Azure
                    services.AddSingleton <IChangeAnalysisStateProvider, BlobChangeAnalysisStateProvider>();
                    services.AddSingleton <IHostedService, ChangeAnalysisService>();
                }

                // Make sure the registered IHostIdProvider is used
                IHostIdProvider provider = rootServiceProvider.GetService <IHostIdProvider>();
                if (provider != null)
                {
                    services.AddSingleton <IHostIdProvider>(provider);
                }

                services.AddSingleton <IDelegatingHandlerProvider, DefaultDelegatingHandlerProvider>();

                // Logging and diagnostics
                services.AddSingleton <IMetricsLogger>(a => new NonDisposableMetricsLogger(metricsLogger));
                services.AddSingleton <IEventCollectorProvider, FunctionInstanceLogCollectorProvider>();

                // Hosted services
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IHostedService, FileMonitoringService>());

                ConfigureRegisteredBuilders(services, rootServiceProvider);
            });

            var debugStateProvider = rootServiceProvider.GetService <IDebugStateProvider>();

            if (debugStateProvider.InDebugMode)
            {
                builder.UseEnvironment(EnvironmentName.Development);
            }

            return(builder);
        }
 public JobHostScopedServiceProviderFactory(IServiceProvider rootProvider, IServiceScopeFactory rootScopeFactory, IDependencyValidator validator)
 {
     _rootProvider     = rootProvider ?? throw new ArgumentNullException(nameof(rootProvider));
     _rootScopeFactory = rootScopeFactory ?? throw new ArgumentNullException(nameof(rootScopeFactory));
     _validator        = validator ?? throw new ArgumentNullException(nameof(validator));
 }
Ejemplo n.º 5
0
        public static IHostBuilder AddWebScriptHost(this IHostBuilder builder, IServiceProvider rootServiceProvider,
                                                    IServiceScopeFactory rootScopeFactory, ScriptApplicationHostOptions webHostOptions, Action <IWebJobsBuilder> configureWebJobs = null)
        {
            ILoggerFactory       configLoggerFactory = rootServiceProvider.GetService <ILoggerFactory>();
            IDependencyValidator validator           = rootServiceProvider.GetService <IDependencyValidator>();
            IMetricsLogger       metricsLogger       = rootServiceProvider.GetService <IMetricsLogger>();
            IEnvironment         environment         = rootServiceProvider.GetService <IEnvironment>();

            builder.UseServiceProviderFactory(new JobHostScopedServiceProviderFactory(rootServiceProvider, rootScopeFactory, validator))
            .ConfigureServices(services =>
            {
                // register default configuration
                // must happen before the script host is added below
                services.ConfigureOptions <HttpOptionsSetup>();
                services.ConfigureOptions <CustomHttpHeadersOptionsSetup>();
                services.ConfigureOptions <HostHstsOptionsSetup>();
                services.ConfigureOptions <HostCorsOptionsSetup>();
                services.ConfigureOptions <CorsOptionsSetup>();
                services.ConfigureOptions <AppServiceOptionsSetup>();
                services.ConfigureOptions <HostEasyAuthOptionsSetup>();
                services.ConfigureOptions <PrimaryHostCoordinatorOptionsSetup>();
            })
            .AddScriptHost(webHostOptions, configLoggerFactory, metricsLogger, webJobsBuilder =>
            {
                // Adds necessary Azure-based services to the ScriptHost, which will use the host-provided IAzureBlobStorageProvider registered below.
                webJobsBuilder.AddAzureStorageCoreServices();

                // This overrides the IAzureBlobStorageProvider registered by the above call to AddAzureStorageCoreServices().
                // This forwards the Host provided implementation to the inner ScriptHost and MUST be called AFTER the AddAzureStorageCoreServices() call to avoid layering mishaps later.
                // The Host provided IAzureBlobStorageProvider is designed to react to specialization and limited ScriptHost lifetimes, so it can be safely forwarded to the ScriptHost.
                webJobsBuilder.Services.AddSingleton <IAzureBlobStorageProvider>(rootServiceProvider.GetService <IAzureBlobStorageProvider>());

                configureWebJobs?.Invoke(webJobsBuilder);

                webJobsBuilder.Services.TryAddSingleton <HttpClient>(f =>
                {
                    var loggerFactory = f.GetService <ILoggerFactory>();
                    loggerFactory.CreateLogger(LogCategories.Startup).LogWarning("Using HttpClient as an injected dependency will not be supported in future versions of Azure Functions. Use IHttpClientFactory instead. See http://aka.ms/functions-httpclient-di for more information.");
                    return(rootServiceProvider.GetService <HttpClient>());
                });

                ConfigureRegisteredBuilders(webJobsBuilder, rootServiceProvider);

                webJobsBuilder.Services.AddSingleton <IHttpRoutesManager, WebScriptHostHttpRoutesManager>();
            })
            .ConfigureAppConfiguration(configurationBuilder =>
            {
                ConfigureRegisteredBuilders(configurationBuilder, rootServiceProvider);
            })
            .ConfigureLogging(loggingBuilder =>
            {
                loggingBuilder.Services.AddSingleton <ILoggerFactory, ScriptLoggerFactory>();

                loggingBuilder.AddWebJobsSystem <SystemLoggerProvider>();
                if (environment.IsAzureMonitorEnabled())
                {
                    loggingBuilder.Services.AddSingleton <ILoggerProvider, AzureMonitorDiagnosticLoggerProvider>();
                }

                if (!FeatureFlags.IsEnabled(ScriptConstants.FeatureFlagDisableDiagnosticEventLogging))
                {
                    loggingBuilder.Services.AddSingleton <ILoggerProvider, DiagnosticEventLoggerProvider>();
                    loggingBuilder.Services.TryAddSingleton <IDiagnosticEventRepository, DiagnosticEventTableStorageRepository>();
                    loggingBuilder.Services.TryAddSingleton <IDiagnosticEventRepositoryFactory, DiagnosticEventRepositoryFactory>();
                }

                ConfigureRegisteredBuilders(loggingBuilder, rootServiceProvider);
            })
            .ConfigureServices(services =>
            {
                var webHostEnvironment = rootServiceProvider.GetService <IScriptWebHostEnvironment>();

                if (FunctionsSyncManager.IsSyncTriggersEnvironment(webHostEnvironment, environment))
                {
                    services.AddSingleton <IHostedService, FunctionsSyncService>();
                }

                if (!environment.IsV2CompatibilityMode())
                {
                    new FunctionsMvcBuilder(services).AddNewtonsoftJson();
                }

                services.AddSingleton <HttpRequestQueue>();
                services.AddSingleton <IHostLifetime, JobHostHostLifetime>();
                services.AddSingleton <IWebJobsExceptionHandler, WebScriptHostExceptionHandler>();

                services.AddSingleton <DefaultScriptWebHookProvider>();
                services.TryAddSingleton <IScriptWebHookProvider>(p => p.GetService <DefaultScriptWebHookProvider>());
                services.TryAddSingleton <IWebHookProvider>(p => p.GetService <DefaultScriptWebHookProvider>());
                services.TryAddSingleton <IJobHostMiddlewarePipeline, DefaultMiddlewarePipeline>();
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IJobHostHttpMiddleware, CustomHttpHeadersMiddleware>());
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IJobHostHttpMiddleware, HstsConfigurationMiddleware>());
                if (environment.IsLinuxConsumption())
                {
                    services.AddSingleton <ICorsMiddlewareFactory, CorsMiddlewareFactory>();
                    services.TryAddEnumerable(ServiceDescriptor.Singleton <IJobHostHttpMiddleware, JobHostCorsMiddleware>());

                    // EasyAuth must go after CORS, as CORS preflight requests can happen before authentication
                    services.TryAddEnumerable(ServiceDescriptor.Singleton <IJobHostHttpMiddleware, JobHostEasyAuthMiddleware>());
                }
                services.TryAddSingleton <IScaleMetricsRepository, TableStorageScaleMetricsRepository>();

                services.TryAddEnumerable(ServiceDescriptor.Singleton <IConcurrencyThrottleProvider, WorkerChannelThrottleProvider>());

                // Make sure the registered IHostIdProvider is used
                IHostIdProvider provider = rootServiceProvider.GetService <IHostIdProvider>();
                if (provider != null)
                {
                    services.AddSingleton <IHostIdProvider>(provider);
                }

                services.AddSingleton <IDelegatingHandlerProvider, DefaultDelegatingHandlerProvider>();

                // Logging and diagnostics
                services.AddSingleton <IMetricsLogger>(a => new NonDisposableMetricsLogger(metricsLogger));
                services.AddSingleton <IEventCollectorProvider, FunctionInstanceLogCollectorProvider>();

                // Hosted services
                services.AddSingleton <IFileMonitoringService, FileMonitoringService>();
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IHostedService, IFileMonitoringService>(p => p.GetService <IFileMonitoringService>()));

                ConfigureRegisteredBuilders(services, rootServiceProvider);
            });

            return(builder);
        }
        public static IHostBuilder AddWebScriptHost(this IHostBuilder builder, IServiceProvider rootServiceProvider,
                                                    IServiceScopeFactory rootScopeFactory, ScriptApplicationHostOptions webHostOptions, Action <IWebJobsBuilder> configureWebJobs = null)
        {
            ILoggerFactory       configLoggerFactory = rootServiceProvider.GetService <ILoggerFactory>();
            IDependencyValidator validator           = rootServiceProvider.GetService <IDependencyValidator>();

            builder.UseServiceProviderFactory(new JobHostScopedServiceProviderFactory(rootServiceProvider, rootScopeFactory, validator))
            .ConfigureServices(services =>
            {
                // register default configuration
                // must happen before the script host is added below
                services.ConfigureOptions <HttpOptionsSetup>();
                services.ConfigureOptions <HostHstsOptionsSetup>();
            })
            .AddScriptHost(webHostOptions, configLoggerFactory, webJobsBuilder =>
            {
                webJobsBuilder
                .AddAzureStorageCoreServices();

                configureWebJobs?.Invoke(webJobsBuilder);

                ConfigureRegisteredBuilders(webJobsBuilder, rootServiceProvider);
            })
            .ConfigureAppConfiguration(configurationBuilder =>
            {
                ConfigureRegisteredBuilders(configurationBuilder, rootServiceProvider);
            })
            .ConfigureLogging(loggingBuilder =>
            {
                loggingBuilder.Services.AddSingleton <ILoggerFactory, ScriptLoggerFactory>();

                loggingBuilder.AddWebJobsSystem <SystemLoggerProvider>();
                loggingBuilder.Services.AddSingleton <ILoggerProvider, UserLogMetricsLoggerProvider>();
                loggingBuilder.Services.AddSingleton <ILoggerProvider, AzureMonitorDiagnosticLoggerProvider>();

                ConfigureRegisteredBuilders(loggingBuilder, rootServiceProvider);
            })
            .ConfigureServices(services =>
            {
                var webHostEnvironment = rootServiceProvider.GetService <IScriptWebHostEnvironment>();
                var environment        = rootServiceProvider.GetService <IEnvironment>();
                if (FunctionsSyncManager.IsSyncTriggersEnvironment(webHostEnvironment, environment))
                {
                    services.AddSingleton <IHostedService, FunctionsSyncService>();
                }

                services.AddSingleton <HttpRequestQueue>();
                services.AddSingleton <IHostLifetime, JobHostHostLifetime>();
                services.TryAddSingleton <IWebJobsExceptionHandler, WebScriptHostExceptionHandler>();
                services.AddSingleton <IScriptJobHostEnvironment, WebScriptJobHostEnvironment>();

                services.AddSingleton <DefaultScriptWebHookProvider>();
                services.TryAddSingleton <IScriptWebHookProvider>(p => p.GetService <DefaultScriptWebHookProvider>());
                services.TryAddSingleton <IWebHookProvider>(p => p.GetService <DefaultScriptWebHookProvider>());
                services.TryAddSingleton <IJobHostMiddlewarePipeline, DefaultMiddlewarePipeline>();
                services.TryAddSingleton <IJobHostHttpMiddleware, HstsConfigurationMiddleware>();

                // Make sure the registered IHostIdProvider is used
                IHostIdProvider provider = rootServiceProvider.GetService <IHostIdProvider>();
                if (provider != null)
                {
                    services.AddSingleton <IHostIdProvider>(provider);
                }

                // Logging and diagnostics
                services.AddSingleton <IMetricsLogger, WebHostMetricsLogger>();
                services.AddSingleton <IEventCollectorProvider, FunctionInstanceLogCollectorProvider>();

                // Hosted services
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IHostedService, HttpInitializationService>());
                services.TryAddEnumerable(ServiceDescriptor.Singleton <IHostedService, FileMonitoringService>());
            });

            var debugStateProvider = rootServiceProvider.GetService <IDebugStateProvider>();

            if (debugStateProvider.InDebugMode)
            {
                builder.UseEnvironment(EnvironmentName.Development);
            }

            return(builder);
        }
 internal ExecuteWithParametersAsScriptFromSolutionExplorerCommand(IVsEditorAdaptersFactoryService adpatersFactory, IVsTextManager textManager, IDependencyValidator validator)
     : base(validator)
 {
     _adaptersFactory = adpatersFactory;
     _textManager     = textManager;
 }
Ejemplo n.º 8
0
 public ExecuteAsScriptCommand(IDependencyValidator validator)
 {
     _validator = validator;
 }
 internal ExecuteFromEditorContextMenuCommand(IDependencyValidator validator)
     : base(validator)
 {
 }
 internal ExecuteFromSolutionExplorerContextMenuCommand(IDependencyValidator validator)
     : base(validator)
 {
 }
Ejemplo n.º 11
0
 public ExecuteSelectionCommand(IDependencyValidator dependencyValidator)
 {
     _validator = dependencyValidator;
 }
Ejemplo n.º 12
0
 public BuildpackProcessor(IDependencyValidator dependencyValidator, IWebConfigFileAppender webConfigFileAppender)
 {
     this.dependencyValidator   = dependencyValidator;
     this.webConfigFileAppender = webConfigFileAppender;
 }