Heim > Artikel > Backend-Entwicklung > Laden der .NET Core-Konfigurationsdatei und DI-Injektion von Konfigurationsdaten
.NET Core-Konfigurationsdatei
In der Vergangenheit lagen Konfigurationsdateien in .NET alle im XML-Format vor, z. B. App.config/Web.config, aber in .NET Core wird die Verwendung des JSON-Formats empfohlen . Konfigurationsdateien, da sie flexibler zu verwenden sind und Konfigurationsdaten mithilfe von DI in .NET Core eingefügt werden können.
Verwendung:
var config = new ConfigurationBuilder() .AddInMemoryCollection() //将配置文件的数据加载到内存中 .SetBasePath(Directory.GetCurrentDirectory()) //指定配置文件所在的目录 .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) //指定加载的配置文件 .Build(); //编译成对象 Console.WriteLine(config["test"]); //获取配置中的数据 config["test"] = "test test"; //修改配置对象的数据,配置对象的数据是可以被修改的 Console.WriteLine(config["test11"]); //获取配置文件中不存在数据也是不会报错的 Console.WriteLine(config["theKey:nextKey"]); //获取:theKey -> nextKey 的值
Inhalt der Konfigurationsdatei appsettings.json:
{ "test": "testVal", "theKey": { "nextKey": "keyVal" } }
Hinweis:
ConfigurationBuilder muss das Paket hinzufügen: „ Microsoft. Extensions.Configuration“
AddJsonFile muss das Paket hinzufügen: „Microsoft.Extensions.Configuration.Json“
Mit DI verwenden
var sp = new ServiceCollection() .AddOptions() //注入IOptions<T>,这样就可以在DI容器中获取IOptions<T>了 .Configure<TestCls>(config.GetSection("TestCls")) //注入配置数据 //也可以对注入的配置数据进行修改 .Configure<TestCls>(t => { t.Name = "Jame"; //修改Name的值 }) .BuildServiceProvider(); //编译 var test = sp.GetService<IOptions<TestCls>>(); //获取注入的配置数据对象 Console.WriteLine(JsonConvert.SerializeObject(test.Value)); //{"Name":"Jame","Age":123} //下面的代码中检验Configure注入的配置数据对象是单例模式的(.NET Core中DI容器的三种生命周期:Singleton(单例), Scoped(作用域), Transient(瞬态)) var test1 = sp.GetService<IOptions<TestCls>>(); Console.WriteLine(test == test1); //true //创建一个新的作用域获取配置数据对象 var test2 = sp.GetService<IServiceScopeFactory>().CreateScope().ServiceProvider.GetService<IOptions<TestCls>>(); Console.WriteLine(test == test2); //true
Konfigurationstestklasse:
public class TestCls { public string Name { get; set; } public int Age { get; set; } }
Inhalt in appsettings.json:
{ "TestCls": { "Name": "Tom", "Age": 123 } }
Hinweis:
ServiceCollection muss das Paket hinzufügen: „Microsoft.Extensions. DependencyInjection“
AddOptions erfordert das Hinzufügen des Pakets: „Microsoft.Extensions.Options.ConfigurationExtensions“
Verwendung von
Startup.cs -> Startup-Konstrukt in ASP.NET Core Initialisieren Sie die Konfigurationsdatei in der Methode:
var builder = new ConfigurationBuilder() .AddInMemoryCollection() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); Configuration = builder.Build();
Startup.cs -> Fügen Sie Konfigurationsdaten in die Methode „ConfigureServices“ ein:
services.AddOptions() //注入IOptions<T> .Configure<TestCls>(Configuration.GetSection(nameof(TestCls))) .Configure<TestCls>(test => { test.Name = "Jame"; //修改Name的值 });
Konfigurationsdaten in der Konfiguration Datei:
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }, "TestCls": { "Name": "Tom", "Age": 123 } }
In den Controller eingefügt:
[Route("api/[controller]")] public class ValuesController : Controller { IOptions<TestCls> _test; public ValuesController(IOptions<TestCls> test) { _test = test; } [HttpGet] public string Gets() { return JsonConvert.SerializeObject(_test.Value); }
Zugriff:/api/values
Anzeige: {"Name": "Jame", "Alter". ":123 🎜>
[Verwandte Empfehlungen]1..Net Core grafischer Verifizierungscode
2..NET Core CLI-Tool Dokumentation dotnet-publish
3.ZKEACMS für .Net Core im Detail vorstellen
4.Teilen Sie den Beispielcode für die Formularüberprüfung in .net MVC
5. 6.