/// <summary> /// Configure Redis /// </summary> /// <param name="configuration">Configuration</param> public static void Configure(IConfiguration configuration) { var redisConnection = configuration.GetConnectionString("RedisConnectionString"); if (string.IsNullOrEmpty(redisConnection)) { throw new ConfigurationErrorsException("Redis connection string not found in appsettings.json"); } RedisConnectionMultiplexer.InitializeConnectionString(redisConnection); }
public void CreateWithFailingProvider() { var context = new Context(TestGlobal.Logger); var errorMessage = "error"; var failingProvider = CreateFailingProvider(errorMessage); Func <Task <IConnectionMultiplexer> > createFunc = () => RedisConnectionMultiplexer.CreateAsync(context, failingProvider, logSeverity: BuildXL.Cache.ContentStore.Interfaces.Logging.Severity.Unknown, usePreventThreadTheft: false); createFunc.Should().Throw <ArgumentException>().Where(e => e.Message.Contains( $"Failed to get connection string from provider {failingProvider.GetType().Name}. {errorMessage}.")); }
public void CreateWithFailingProvider() { var context = new Context(TestGlobal.Logger); var errorMessage = "error"; var failingProvider = CreateFailingProvider(errorMessage); Func <Task <IConnectionMultiplexer> > createFunc = () => RedisConnectionMultiplexer.CreateAsync(context, failingProvider); createFunc.Should().Throw <ArgumentException>().Where(e => e.Message.Contains( $"Failed to get connection string from provider {failingProvider.GetType().Name}. {errorMessage}.")); }
public static void AddCustomDataProtection(this IServiceCollection services, IConfiguration configuration, string discriminator) { var connectionString = new AzureKeyVaultConnectionStringBuilder(configuration.GetConnectionString("AzureKeyVault")); services.AddDataProtection(options => options.ApplicationDiscriminator = discriminator) .PersistKeysToRedis(RedisConnectionMultiplexer.Connect(configuration.GetConnectionString("Redis")), "DataProtection-Keys") .ProtectKeysWithAzureKeyVault( $"https://{connectionString.Name}.vault.azure.net/keys/dataprotection/", connectionString.ClientId, connectionString.ClientSecret); }
public static IServiceCollection AddCache(this IServiceCollection services, IConfiguration configuration) { var section = configuration.GetSection("Cache"); var type = section["Type"] ?? "redis"; if (type.Equals("redis", StringComparison.CurrentCultureIgnoreCase)) { var config = new RedisConfig { ConnectionString = configuration["Cache:Redis:ConnectionString"], ApplicationKey = configuration["Cache:Redis:ApplicationKey"] }; RedisConnectionMultiplexer.Init(config); services.AddSingleton(typeof(ICacheService), typeof(RedisCacheService)); } else { throw new ArgumentNullException("不存在此缓存插件"); } return(services); }