diff --git a/Core.Blueprint.Mongo/Configuration/RegisterBlueprint.cs b/Core.Blueprint.Mongo/Configuration/RegisterBlueprint.cs
index ec55e3f..6feebe0 100644
--- a/Core.Blueprint.Mongo/Configuration/RegisterBlueprint.cs
+++ b/Core.Blueprint.Mongo/Configuration/RegisterBlueprint.cs
@@ -4,6 +4,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
+using static MongoDB.Driver.WriteConcern;
namespace Core.Blueprint.DAL.Mongo.Configuration
{
@@ -22,14 +23,19 @@ namespace Core.Blueprint.DAL.Mongo.Configuration
/// The updated with MongoDB services registered.
public static IServiceCollection AddMongoLayer(this IServiceCollection services, IConfiguration configuration)
{
- string text = "Local";
+ var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? string.Empty;
+
services.AddSingleton();
string ConnectionString = configuration.GetSection("ConnectionStrings:MongoDB").Value ?? string.Empty;
string Databasename = configuration.GetSection("MongoDb:DatabaseName").Value ?? string.Empty;
- string Audience = text == "Local"
- ? configuration.GetSection("MongoDb:LocalAudience").Value
- : configuration.GetSection("MongoDb:Audience").Value;
- if (string.IsNullOrEmpty(ConnectionString) || string.IsNullOrEmpty(Databasename) || string.IsNullOrEmpty(Audience))
+ string Audience = string.Empty;
+
+ if (!environment.Equals("Local", StringComparison.OrdinalIgnoreCase))
+ {
+ Audience = configuration.GetSection("MongoDb:Audience").Value ?? string.Empty;
+ }
+
+ if (string.IsNullOrEmpty(ConnectionString) || string.IsNullOrEmpty(Databasename))
{
throw new InvalidOperationException("Mongo connection is not configured correctly.");
}
@@ -38,13 +44,22 @@ namespace Core.Blueprint.DAL.Mongo.Configuration
{
options.ConnectionString = ConnectionString;
options.Databasename = Databasename;
- options.Audience = Audience;
+
+ if (!environment.Equals("Local", StringComparison.OrdinalIgnoreCase))
+ {
+ options.Audience = Audience;
+ }
});
services.AddSingleton((Func)delegate (IServiceProvider serviceProvider)
{
MongoDbSettings value2 = serviceProvider.GetRequiredService>().Value;
MongoClientSettings mongoClientSettings = MongoClientSettings.FromConnectionString(value2.ConnectionString);
- //mongoClientSettings.Credential = MongoCredential.CreateOidcCredential(new AzureIdentityProvider(value2.Audience));
+
+ if (!environment.Equals("Local", StringComparison.OrdinalIgnoreCase))
+ {
+ mongoClientSettings.Credential = MongoCredential.CreateOidcCredential(new AzureIdentityProvider(value2.Audience));
+ }
+
return new MongoClient(mongoClientSettings);
});
services.AddSingleton(delegate (IServiceProvider serviceProvider)
diff --git a/Core.Blueprint.Redis/Configuration/RegisterBlueprint.cs b/Core.Blueprint.Redis/Configuration/RegisterBlueprint.cs
index ec42cda..854b173 100644
--- a/Core.Blueprint.Redis/Configuration/RegisterBlueprint.cs
+++ b/Core.Blueprint.Redis/Configuration/RegisterBlueprint.cs
@@ -21,8 +21,6 @@ namespace Core.Blueprint.Caching.Configuration
{
// TODO for the following variable we'll need to add in the appsettings.json the following config: "UseRedisCache": true,
bool useRedis = configuration.GetValue("UseRedisCache");
- //TODO decide wheter to use appsettings or the following ENV variable
- useRedis = Environment.GetEnvironmentVariable("CORE_BLUEPRINT_PACKAGES_USE_REDIS")?.ToLower() == "true";
if (useRedis)
{
diff --git a/Core.Blueprint.Redis/RedisCacheProvider.cs b/Core.Blueprint.Redis/RedisCacheProvider.cs
index 7715f44..90901ce 100644
--- a/Core.Blueprint.Redis/RedisCacheProvider.cs
+++ b/Core.Blueprint.Redis/RedisCacheProvider.cs
@@ -35,14 +35,29 @@ namespace Core.Blueprint.Caching
/// The Redis connection string.
/// An instance representing the Redis cache database.
/// Thrown when the connection to Redis fails. InitializeRedisAsync(string connectionString)
+ public async Task InitializeRedisAsync(string connectionString)
{
try
{
- var configurationOptions = await ConfigurationOptions.Parse($"{connectionString}")
- .ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
+ var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? string.Empty;
+
+ ConfigurationOptions configurationOptions;
+
+ if (environment.Equals("Local", StringComparison.OrdinalIgnoreCase))
+ {
+ // Use simple local Redis config
+ configurationOptions = ConfigurationOptions.Parse(connectionString);
+ }
+ else
+ {
+ // Use Azure Redis config
+ configurationOptions = await ConfigurationOptions
+ .Parse(connectionString)
+ .ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
+ }
configurationOptions.AbortOnConnectFail = false;
+
var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
_logger.LogInformation("Successfully connected to Redis.");