/// <summary> /// 设置配置信息 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="config"></param> /// <returns></returns> public async Task <bool> SetConfig(string key, MangoServiceConfiguration config) { return(await base.SetConfig <MangoServiceConfiguration>(key, config)); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllers() .AddJsonOptions(o => { o.JsonSerializerOptions.Converters.Add(new IntConverter()); o.JsonSerializerOptions.Converters.Add(new NullableIntConverter()); o.JsonSerializerOptions.Converters.Add(new LongConverter()); o.JsonSerializerOptions.Converters.Add(new NullableLongConverter()); o.JsonSerializerOptions.Converters.Add(new DateTimeConverter()); o.JsonSerializerOptions.Converters.Add(new NullableDateTimeConverter()); }); services.AddAutoMapper(); services.AddMediatR(); #region ÅäÖÃÖÐÐÄ var moduleConfig = default(MangoServiceConfiguration); var globalConfig = default(MangoServiceConfiguration); if (Env.IsDevelopment()) { //²âÊÔ»·¾³ globalConfig = new MangoServiceConfiguration { JwtKey = @"MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDJQJY/vIlQV8Hm y41w6zSJRL7zo/57uj0T6OrJXgzo9pk5mtCWKW/+KTmQ7OCZVaIXKq+5OW1ibkjI QDJFRBCbUoUN8799GiadCQJDzpcaGh5ev3wjxzqG8yR0bkkgMNkoYhX7IwJ+6B+1 zYsyQeVvhztyO2Rj79lId7oSO4Ku2qDomNe1LaBQP6rESKwdx6TIWPUr4CdbnLGX AmJ95P66RQ8mqfeHbqvlbZhK/eUF0kNNxbCV0qH4lTFSugSMQaKRNg0H1tlc86dp lyZpvf8KEekmNYwY1TZSTC4HwVzDiUn6+yh5EbkGlcC7tO1ClntGHwBGjukLKBk5 sjx5BgT/AgMBAAECggEBAK7qvOw+sNYswDIZnyCSvYHFR3Y5hhkBwM5KNa65WN0u X/TKUxsAfv9X01ncGEYNQKmEB2Ekwaa4lfe+nDLJuulU6qI6xac1EHSSfO50Y65j HxxYr8vlAECEmZ28sUASVNwdjF9PiX7Fv7HjKWWQEptB3XAmoNWfhKnQrd/k62uO u4+n3Uej/cH+l1RpQQDqy15ojSIBwBDpZFVPJOt/oQpBgF0V/3NxJSiwAnJCWau7 vGeqFQPlNKW0AldE0Kv3l67FTXC97nnpWdihIvBM0sc8FLNGGg6B4GLTct+Yf5R0 mPI2KHL3o7TSburKcA03AQ+c2EQ3yh9edgRDa7G4pIECgYEA+yjIWIRU20TGDx/R 5ox0bdlZyeSQggwuS8rY2k6sU2hFa513WFB5R6duv47QVKEwGKlnccGrtvU2vNQF fHYyB9odpkMCQphSUEKy2UrWEB4LJmekUFP4+AjXO0JOEsrQ88hXeSnpC2UXuZe5 fWn+udeUYrEFondCilBomJzA6r8CgYEAzSGQSXokpAec5Cvm0mTGIM1/H7nG7Jm2 BbJ5oyyieebGi35GY9RYrCpOIUkP01cBQaRhIv7ftlu6f4lEH/VpxCIRnA7AROsl rkdQVAkWU99szd2/6zcAoAs6vU1n5SWF4cF6E/xMCney+x8tGYMWozRwha27uip+ YqJ4DY1ktcECgYEAmuE1WtCP+39Xm7AFomRuz+a+peZfUejnkvxnKWqWYiL Nhy6DWPEub/53JZhsHOW5OGHYJWqoZslnvDMPWdV7VdZJ3QDHpdi7vhlNR8xxQcY nqiJ2XqqL1LeDlyfqhWbS456tZornTlhG2OnvzafvJRpYxykHeMj/Sh9FsUCgYAy kLJ7mlNL5+CB0lycwmCgl2ddz7K8ggt/jgYz9f27JOsOWbtKQn71OZx20gbHpuvV XYrgUIme7y+i3phfdGR1B5zlpjE5C+oG8udXP8I0PKAagy4a8j0CNqJtJZaVwtEk 3EeWg5vO/MCu7Hl2j3zWEEgoe7IJ6w2qjLghRxhrQQKBgQCiAnVt7AAIokPYBF9X wLvUq9MZvk+kbRmRulIKKDSjRAGlxPK3wG416xUfEEox/wmuQicWsb83SOqrSX6Z vFixHmPWpvv8a0r26gmdHyhMmXTcl2P5RHdJ/iCBKj9/pIAabhenN/vClnsB8vv/ tN9fcep4jGpay5xZ0Nj2fSWygw==" }; moduleConfig = new MangoServiceConfiguration { ValidIssuer = "test.cn", ValidAudience = "mango.opensource", DbConnectString = "server=localhost;database=mytest;user=root;password=228887", RedisConnectString = "192.168.99.100:6379" }; } else { //Éú²ú»·¾³ var token = Configuration["Consul:Token"]; var configKey = Configuration["Service:ConfigKey"]; var consulIp = Configuration["Consul:Ip"]; var consulPort = Configuration["Consul:Port"]; var config = new MangoConfig($"http://{consulIp}:{consulPort}", token); moduleConfig = config.GetConfig(configKey).Result; globalConfig = config.GetConfig("mango/global").Result; } #endregion #region ÊÚȨÅäÖà var policyKeyPair = new Dictionary <string, string> { { "client", moduleConfig.ValidAudience }, { "admin", "mango.admin" } }; services.AddMangoJwtPolicy(policyKeyPair, opt => { opt.Key = globalConfig.JwtKey; opt.Issuer = moduleConfig.ValidIssuer; }); #endregion #region ¿çÓòÅäÖà services.AddCors(config => { config.AddPolicy("all", p => { p.SetIsOriginAllowed(op => true) .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); }); #endregion #region ²Ö´¢ÅäÖà services.AddMangoDbContext <OpenSourceDbContext>(moduleConfig.DbConnectString); services.AddDapper(moduleConfig.DbConnectString, typeof(MySqlConnection)); services.AddFreeRedis(o => { o.ConnectionString = moduleConfig.RedisConnectString; }); #endregion #region ·þÎñ×¢Èë services.AddHttpContextAccessor(); services.AddScoped <IProjectRepository, ProjectRepository>(); services.AddScoped <IProjectQueries, ProjectQueries>(); services.AddScoped <IAuthenticationService, AuthenticationService>(); services.AddScoped(typeof(IPipelineBehavior <,>), typeof(TryCatchBehaviors <,>)); #endregion }