コード例 #1
0
        public TestFunctionHost(string scriptPath, string logPath,
                                Action <IWebJobsBuilder> configureJobHost = null,
                                Action <IConfigurationBuilder> configureAppConfiguration = null,
                                Action <IServiceCollection> configureServices            = null)
        {
            _appRoot = scriptPath;

            _hostOptions = new ScriptApplicationHostOptions
            {
                IsSelfHost     = true,
                ScriptPath     = _appRoot,
                LogPath        = logPath,
                SecretsPath    = Environment.CurrentDirectory, // not used
                HasParentScope = true
            };

            var optionsMonitor = TestHelpers.CreateOptionsMonitor(_hostOptions);
            var builder        = new WebHostBuilder()
                                 .ConfigureLogging(b =>
            {
                b.AddProvider(_loggerProvider);
            })
                                 .ConfigureServices(services =>
            {
                services.Replace(new ServiceDescriptor(typeof(ISecretManagerProvider), new TestSecretManagerProvider(new TestSecretManager())));
                services.Replace(ServiceDescriptor.Singleton <IServiceProviderFactory <IServiceCollection> >(new WebHostServiceProviderFactory()));
                services.Replace(new ServiceDescriptor(typeof(IOptions <ScriptApplicationHostOptions>), new OptionsWrapper <ScriptApplicationHostOptions>(_hostOptions)));
                services.Replace(new ServiceDescriptor(typeof(IOptionsMonitor <ScriptApplicationHostOptions>), optionsMonitor));

                services.AddSingleton <IConfigureBuilder <IConfigurationBuilder> >(_ => new DelegatedConfigureBuilder <IConfigurationBuilder>(c =>
                {
                    c.AddTestSettings();
                    configureAppConfiguration?.Invoke(c);
                }));

                configureServices?.Invoke(services);
            })
                                 .AddScriptHostBuilder(webJobsBuilder =>
            {
                var loggingBuilder = new LoggingBuilder(webJobsBuilder.Services);
                loggingBuilder.AddProvider(_loggerProvider);
                loggingBuilder.AddFilter <TestLoggerProvider>(_ => true);

                webJobsBuilder.AddAzureStorage();

                configureJobHost?.Invoke(webJobsBuilder);
            })
                                 .UseStartup <Startup>();

            _testServer = new TestServer(builder);

            HttpClient             = new HttpClient(new UpdateContentLengthHandler(_testServer.CreateHandler()));
            HttpClient.BaseAddress = new Uri("https://localhost/");

            var manager = _testServer.Host.Services.GetService <IScriptHostManager>();

            _hostService = manager as WebJobsScriptHostService;

            StartAsync().GetAwaiter().GetResult();
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: MaxweiWang/Max.Study.Core
 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
 WebHost.CreateDefaultBuilder(args)
 .ConfigureLogging((context, LoggingBuilder) =>
 {
     LoggingBuilder.AddFilter("System", LogLevel.Warning);     // 忽略系统的其他日志
     LoggingBuilder.AddFilter("Microsoft", LogLevel.Warning);
     LoggingBuilder.AddLog4Net();
 })
 .UseStartup <Startup>();
コード例 #3
0
 public static IHostBuilder CreateHostBuilder(string[] args) =>
 Host.CreateDefaultBuilder(args)
 .UseServiceProviderFactory(new AutofacServiceProviderFactory())
 .ConfigureWebHostDefaults(webBuilder =>
 {
     webBuilder.UseStartup <Startup>();
 }).ConfigureLogging((context, LoggingBuilder) =>          //ILogger
 {
     LoggingBuilder.AddFilter("System", LogLevel.Warning); // 忽略系统的其他日志
     LoggingBuilder.AddFilter("Microsoft", LogLevel.Warning);
 }).UseLog4Net();