Я прихожу из обычного .NET Web API и обнаружил, что опыт настройки в .NET Core 2 абсолютно сводит с ума.
Я прочитал официальную документацию и несколько учебных пособий, таких как этот , но все они видят ошибку.
У меня есть вспомогательный класс базы данных, который должен устанавливать соединение MongoDB.
Моя конфигурация довольно проста
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"DefaultConnection": "mongodb://localhost:27017"
}
}
- Я начал с официального шаблонного шаблона .NET Core Angular (ngx)
- Я добавляю конфигурацию как сервисный синглтон в Startup.CS в разделе
ConfigureServices
, например services.AddSingleton(Configuration);
Я пытаюсь внедрить конфигурацию в свой класс следующим образом:
public class DatabaseHelper
{
public static string connstring { get; private set; }
public DatabaseHelper(IConfiguration Configuration)
{
connstring = Configuration["ConnectionStrings:DefaultConnectionString"];
}
public static IMongoDatabase QuizDB { get; } = GetDatabase("QuizEngine");
public static IMongoCollection<Quiz> QuizCol { get; } = GetQuizCollection();
public static MongoClient GetConnection() {
return new MongoClient(connstring);
}
public static IMongoDatabase GetDatabase(string database) {
MongoClient conn = DatabaseHelper.GetConnection();
return conn.GetDatabase(database);
}
public static IMongoCollection<Quiz> GetQuizCollection() {
return DatabaseHelper.QuizDB.GetCollection<Quiz>("Quizzes");
}
}
Это компилируется и собирается без ошибок Intellesense - но когда я прохожув отладчике значение connstring
равно нулю.Я попытался поиграться с именами конфигурации и т. Д., Но я всегда выхожу пустым.
Я также попробовал способ POCO, используя пример кода в ответе ниже, но, похоже, я сталкиваюсь со статическим полем.проблемы инициализатора.
Получение значения из appsettings.json в ядре .net
, если это помогает, это часть класса запуска, где он устанавливает общедоступное значение Configuration
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }