/// <summary>
        /// Add a StartupFilter that provides BeatPulse features.
        /// </summary>
        /// <param name="hostBuilder">The <see cref="IWebHostBuilder"/>.</param>
        /// <param name="setup">Provided delegate to configure BeatPulse options like timeout, path, detailed errors etc.</param>
        /// <returns>The <see cref="IWebHostBuilder"/> reference with BeatPulse features.</returns>
        public static IWebHostBuilder UseBeatPulse(this IWebHostBuilder hostBuilder, Action <BeatPulseOptions> setup = null)
        {
            hostBuilder.ConfigureServices(defaultServices =>
            {
                var options = new BeatPulseOptionsConfiguration();

                var configuration = defaultServices.BuildServiceProvider().GetRequiredService <IConfiguration>();
                configuration.Bind(BeatPulseKeys.BEATPULSE_OPTIONS_SETTING_KEY, options);

                setup?.Invoke(options);
                defaultServices.AddSingleton <IStartupFilter>(new BeatPulseFilter(options));
            });

            return(hostBuilder);
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="hostBuilder"></param>
        /// <returns></returns>
        public static IWebHostBuilder UseHealthChecks(this IWebHostBuilder hostBuilder)
        {
            hostBuilder.ConfigureServices((context, services) =>
            {
                var optionsConfiguration = new BeatPulseOptionsConfiguration();
                services.BuildServiceProvider().GetRequiredService <IConfiguration>().Bind("BeatPulseOptions", optionsConfiguration);
                optionsConfiguration.ConfigurePath(path: "health")                              //默认路径
                .ConfigureOutputCache(5)                                                        //缓存10秒
                .ConfigureTimeout(milliseconds: 1500)                                           // 超时时间
                .ConfigureDetailedOutput(detailedOutput: true, includeExceptionMessages: true); //default (true,false)

                services.AddSingleton <IStartupFilter>(new BeatPulseFilter(optionsConfiguration));
            });

            return(hostBuilder);
        }
示例#3
0
        /// <summary>
        /// Add BeatPulse middleware into the request pipeline.
        /// </summary>
        /// <param name="app">The <see cref="IApplicationBuilder"/>.</param>
        /// <param name="setup">Provide delegate to configure BeatPulse options like timeout, path, detailed errors etc.</param>
        /// <returns>A reference to the <paramref name="app"/> after the operation has completed.</returns>
        public static IApplicationBuilder UseBeatPulse(this IApplicationBuilder app, Action <BeatPulseOptions> setup = null)
        {
            var options = new BeatPulseOptionsConfiguration();

            var configuration = app.ApplicationServices.GetService <IConfiguration>();

            configuration.Bind(BeatPulseKeys.BEATPULSE_OPTIONS_SETTING_KEY, options);

            setup?.Invoke(options);

            app.MapWhen(context => context.IsBeatPulseRequest(options), appBuilder =>
            {
                appBuilder.UseMiddleware <BeatPulseMiddleware>(options);
            });

            return(app);
        }