【发布时间】:2017-04-26 08:37:07
【问题描述】:
我是 dotnet/c# 的新手,正在努力学习。我正在编写一个连接/初始化到不同数据库的服务器应用程序。一个是 MongoDB。然后我有一个配置微服务。如何保存从配置服务器获得的连接字符串?从这些MongoDB example,我需要传递连接字符串。但我不想每次都从配置服务器获取它。
阅读here 的一些关于依赖注入的教程,不确定这是否真的是我需要的。
这是我的试用代码..
我想要设置或充当 getter/setter 的配置服务
public class Configctl : IDisposable
{
public static string env;
public Configctl()
{
env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
Console.WriteLine($"ASPNETCORE_ENVIRONMENT/env={env}");
}
public static void ConfigureMongodb()
{
Console.WriteLine($"configure mongodb..");
// var config = await getConfig()
}
}
MongdbContext 表示我想从Configctl 中填写MongoUrl,而不是每次都从Configctl 中获取。
public class MongdbContext<T> : IDisposable
{
public IMongoDatabase _database { get; }
public IMongoClient _client;
public MongdbContext()
{
var settings = MongoClientSettings.FromUrl(GetMongoURL());
_client = new MongoClient(settings);
_database = _client.GetDatabase("testdb");
}
public void Dispose()
{
Console.WriteLine("mongodb disposed");
}
public static MongoUrl GetMongoURL()
{
return new MongoUrl("mongodb://user:pass@host:27017/admin");
}
}
为了实验,我尝试从ConfigureServices 调用Configctl。我可能错了..
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(new Configctl());
services.AddMvc();
}
【问题讨论】: