这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

72 lines
3.2 KiB

using Microsoft.Extensions.Configuration;
namespace Microsoft.Extensions.Hosting;
public static class ConfigurationExtensions
{
public static TBuilder MapDefaultConfiguration<TBuilder>(this TBuilder builder) where TBuilder : IHostApplicationBuilder
{
builder.AddRedisClient("redis");
builder.AddRabbitMQClient("rabbitmq");
builder.AddElasticsearchClient("elasticsearch");
// CAP PostgreSql
builder.Configuration["CAP:PostgreSql:ConnectionString"] = builder.Configuration.GetConnectionString("Default");
// CAP RabbitMQ
builder.Configuration["CAP:RabbitMQ:HostName"] = builder.Configuration["RABBITMQ_HOST"];
builder.Configuration["CAP:RabbitMQ:UserName"] = builder.Configuration["RABBITMQ_USERNAME"];
builder.Configuration["CAP:RabbitMQ:Password"] = builder.Configuration["RABBITMQ_PASSWORD"];
builder.Configuration["CAP:RabbitMQ:Port"] = builder.Configuration["RABBITMQ_PORT"];
// Abp RabbitMQ
builder.Configuration["RabbitMQ:Default:HostName"] = builder.Configuration["RABBITMQ_HOST"];
builder.Configuration["RabbitMQ:Default:UserName"] = builder.Configuration["RABBITMQ_USERNAME"];
builder.Configuration["RabbitMQ:Default:Password"] = builder.Configuration["RABBITMQ_PASSWORD"];
builder.Configuration["RabbitMQ:Default:Port"] = builder.Configuration["RABBITMQ_PORT"];
// Elsa RabbitMQ
builder.Configuration["Elsa:Rebus:RabbitMQ:Connection"] = builder.Configuration.GetConnectionString("RabbitMQ");
// Redis
var redisConnectionString = builder.Configuration.GetConnectionString("Redis");
builder.Configuration["Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=10";
// DistributedLock
builder.Configuration["DistributedLock:Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=11";
// Features
builder.Configuration["Features:Validation:Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=12";
// SignalR
builder.Configuration["SignalR:Redis:Configuration"] = $"{redisConnectionString},defaultDatabase=13,channelPrefix=abp-realtime-channel";
// Elasticsearch
var elasticSearchUrl = builder.Configuration.GetConnectionString("Elasticsearch");
var serialogEsConfig = builder.Configuration.GetSection("Serilog:WriteTo");
void ReplaceElasticsearchLogging(IConfiguration configuration)
{
foreach (var config in configuration.GetChildren())
{
if (string.Equals(config["Name"], "Async", StringComparison.InvariantCultureIgnoreCase))
{
var configureArgs = config.GetSection("Args:configure");
ReplaceElasticsearchLogging(configureArgs);
}
if (string.Equals(config["Name"], "Elasticsearch", StringComparison.InvariantCultureIgnoreCase))
{
config["Args:nodeUris"] = elasticSearchUrl;
}
}
}
if (serialogEsConfig.Exists())
{
ReplaceElasticsearchLogging(serialogEsConfig);
}
builder.Configuration["Elasticsearch:NodeUris"] = elasticSearchUrl;
return builder;
}
}