コード例 #1
0
        public async Task TestControllerWebWarm()
        {
            TestServer server  = null;
            var        builder = new WebHostBuilder()
                                 .Configure(app =>
            {
                app.UseMvc();
            })
                                 .ConfigureServices(services => {
                services.AddMvcCore().AddFormatterMappings().AddJsonFormatters();
                services.AddSingleton <ILogger <HostedWarmWebService> >(sp => new XUnitTestLoggerNamed <HostedWarmWebService>(_outputHelper));
                var options = new HostedWarmWebOptions
                {
                    BaseUri         = new Uri("http://localhost/"),
                    WarmupEndpoints = new [] { "testserver/countcalls", "testserver/badendpoint" },
                    Interval        = TimeSpan.FromSeconds(2),
                    InitialDelay    = TimeSpan.FromMilliseconds(500)
                };
                services.AddSingleton(options);
                var client = new HttpClient {
                    BaseAddress = new Uri("http:")
                };
                services.AddSingleton <Func <HttpClient> >(sp => () => server.CreateClient());
                services.AddHostedService <HostedWarmWebService>();
            });

            using (server = new TestServer(builder))
            {
                await Task.Delay(TimeSpan.FromSeconds(5));
            }

            Assert.InRange(TestServerController.Calls, 2, 4);
        }
コード例 #2
0
        /// <summary>
        /// Constructs warm web service
        /// </summary>
        /// <param name="options">The options for the warm web service</param>
        /// <param name="logger">The logger for the service</param>
        /// <param name="getClient">A function for getting the httpclient, will use the default if null</param>
        public HostedWarmWebService(HostedWarmWebOptions options, ILogger <HostedWarmWebService> logger, Func <HttpClient> getClient = null) : base(options, logger)
        {
            _options = options;
            _logger  = logger;

            if (getClient == null)
            {
                _client = new HttpClient
                {
                    BaseAddress = _options.BaseUri
                };
            }
            _getClient = getClient;
        }