src/Library/NetPro.Analysic/RequestAnalysisExtensionService.cs

(完整代码) 1KB

using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using NetPro.CsRedis;
using System;
namespace NetPro.Analysic
{
    /// <summary>
    /// 
    /// </summary>
    public static class RequestAnalysisExtensionService
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        public static IServiceCollection AddRequestAnalysic(this IServiceCollection services)
        {
            var configuration = services.BuildServiceProvider().GetRequiredService<IConfiguration>();
            try
            {
                var option = configuration.GetSection(nameof(RequestAnalysisOption)).Get<RequestAnalysisOption>();
                if (option == null || !option.Enabled)
                    return services;
                services.AddHttpContextAccessor();
                services.AddSingleton(option);
                var redisCacheOption = configuration.GetSection(nameof(RedisCacheOption)).Get<RedisCacheOption>();
                if (redisCacheOption != null && redisCacheOption.Enabled)
                {
                    //新增redis缓存注入
                    services.AddCsRedis<SystemTextJsonSerializer>(configuration);
                }
            }
            catch (Exception ex)
            {
                throw new ArgumentNullException("流量分析依赖NetPro.CsRedis组件,请检查是否注入服务并遗漏RedisCacheOption配置节点", ex);
            }

            return services;
        }
    }

    /// <summary>
    /// 
    /// </summary>
    public class RequestAnalysicBehaviorOptions
    {
        /// <summary>
        /// 
        /// </summary>
        public Func<bool, HttpContext> RequestAnalysicStateResponseFactory { get; set; }
    }
}

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。