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