Heim Backend-Entwicklung C#.Net-Tutorial Laden der .NET Core-Konfigurationsdatei und DI-Injektion von Konfigurationsdaten

Laden der .NET Core-Konfigurationsdatei und DI-Injektion von Konfigurationsdaten

May 26, 2017 pm 01:33 PM
.net core

.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 的值
Nach dem Login kopieren

Inhalt der Konfigurationsdatei appsettings.json:

{
  "test": "testVal",
  "theKey": {
    "nextKey": "keyVal"
  }
}
Nach dem Login kopieren

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
Nach dem Login kopieren

Konfigurationstestklasse:

         public class TestCls
         {
             public string Name { get; set; }
             public int Age { get; set; }
         }
Nach dem Login kopieren

Inhalt in appsettings.json:

{
  "TestCls": {
    "Name": "Tom",
    "Age": 123
  }
}
Nach dem Login kopieren

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();
Nach dem Login kopieren

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的值
                });
Nach dem Login kopieren

Konfigurationsdaten in der Konfiguration Datei:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "TestCls": {
    "Name": "Tom",
    "Age": 123
  }
}
Nach dem Login kopieren

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);
        }
Nach dem Login kopieren

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.

Wie mache ich eine HTTP-Anfrage unter .net Core?

6.

Instanz-Tutorial zum Ausführen von ZKEACMS unter CentOS

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So aktivieren Sie die Speicherintegritätsfunktion von Core Isolation in Windows 11 So aktivieren Sie die Speicherintegritätsfunktion von Core Isolation in Windows 11 May 10, 2023 pm 11:49 PM

Microsofts Windows 11 2022 Update (22H2) aktiviert standardmäßig den Speicherintegritätsschutz von CoreIsolation. Wenn Sie jedoch eine ältere Version des Betriebssystems ausführen, beispielsweise Windows 11 2022 Update (22H1), müssen Sie diese Funktion manuell aktivieren. Aktivieren Sie die Speicherintegritätsfunktion von CoreIsolation in Windows 11. Für Benutzer, die sich mit Core Isolation nicht auskennen: Es handelt sich um einen Sicherheitsprozess, der grundlegende Kernaktivitäten unter Windows vor Schadprogrammen schützen soll, indem er sie im Speicher isoliert. Dieser Prozess gewährleistet in Kombination mit der Speicherintegritätsfunktion

Was bedeutet Computerkern? Was bedeutet Computerkern? Sep 05, 2022 am 11:24 AM

Kern hat in Computern zwei Bedeutungen: 1. Der Kern, auch Kern genannt, ist der wichtigste Teil der CPU. Alle Berechnungen, die Annahme von Speicherbefehlen und die Verarbeitung von Daten der CPU werden vom Kern durchgeführt. Core ist der Prozessorname von Intel. Core ist die Prozessormarke, die Intel nach dem Pentium-Prozessor eingeführt hat. Derzeit werden Core-Prozessoren der zwölften Generation herausgebracht.

Wie sind die Berufsaussichten von C#? Wie sind die Berufsaussichten von C#? Oct 19, 2023 am 11:02 AM

Ganz gleich, ob Sie Anfänger oder erfahrener Profi sind: Die Beherrschung von C# ebnet den Weg für Ihre Karriere.

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks May 06, 2024 pm 04:43 PM

Die Entwicklung von Technologien der künstlichen Intelligenz (KI) ist heute in vollem Gange und sie haben in verschiedenen Bereichen großes Potenzial und Einfluss gezeigt. Heute wird Dayao Ihnen 4 .NET Open-Source-KI-Modell-LLM-bezogene Projekt-Frameworks vorstellen und hofft, Ihnen einige Referenzen zu geben. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel ist ein Open-Source-Softwareentwicklungskit (SDK), das für die Integration großer Sprachmodelle (LLM) wie OpenAI und Azure entwickelt wurde

So beheben Sie den thermischen Auslösefehler des Prozessors in Windows 11/10 [Fix] So beheben Sie den thermischen Auslösefehler des Prozessors in Windows 11/10 [Fix] Apr 17, 2023 am 08:13 AM

Die meisten Geräte wie Laptops und Desktops werden seit langem stark von jungen Gamern und Programmierern genutzt. Das System hängt manchmal aufgrund einer Anwendungsüberlastung. Dies zwingt Benutzer dazu, ihre Systeme herunterzufahren. Dies passiert hauptsächlich Spielern, die umfangreiche Spiele installieren und spielen. Wenn das System nach einem erzwungenen Herunterfahren versucht, zu starten, wird auf einem schwarzen Bildschirm ein Fehler angezeigt, wie unten dargestellt: Nachfolgend sind die Warnungen aufgeführt, die während dieses Startvorgangs erkannt wurden. Diese können in den Einstellungen auf der Seite „Ereignisprotokoll“ eingesehen werden. Warnung: Überhitzung des Prozessors. Drücken Sie eine beliebige Taste, um fortzufahren. ..Diese Art von Warnmeldungen werden immer dann ausgegeben, wenn die Prozessortemperatur eines Desktops oder Laptops den Temperaturschwellenwert überschreitet. Nachfolgend sind die Gründe aufgeführt, warum dies auf Windows-Systemen geschieht. Viele schwere Anwendungen sind in

.NET-Leistungsoptimierungstechnologie für Entwickler .NET-Leistungsoptimierungstechnologie für Entwickler Sep 12, 2023 am 10:43 AM

Wenn Sie ein .NET-Entwickler sind, müssen Sie sich der Bedeutung der Optimierung von Funktionalität und Leistung bei der Bereitstellung hochwertiger Software bewusst sein. Durch den fachgerechten Einsatz der bereitgestellten Ressourcen und die Verkürzung der Ladezeiten der Website schaffen Sie nicht nur ein angenehmes Erlebnis für Ihre Nutzer, sondern senken auch die Infrastrukturkosten.

Praxis für plattformübergreifende .NET Core-Anwendungsentwicklung: eine nahtlose Reise von Windows zu Linux und macOS Praxis für plattformübergreifende .NET Core-Anwendungsentwicklung: eine nahtlose Reise von Windows zu Linux und macOS Feb 26, 2024 pm 12:55 PM

Mit der Einführung von .NETCore haben .NET-Entwickler eine neue Möglichkeit, .NET-Anwendungen einfach auf mehreren Betriebssystemen zu schreiben und auszuführen. In diesem Artikel wird erläutert, wie Sie mit .NETCore eine plattformübergreifende Anwendungsentwicklung erreichen und Best-Practice-Erfahrungen auf Betriebssystemen wie Windows, Linux und macOS austauschen. 1. Bereiten Sie die Entwicklungsumgebung vor. Um mit der plattformübergreifenden Anwendungsentwicklung zu beginnen, müssen Sie zunächst die Entwicklungsumgebung für jede Zielplattform vorbereiten. Windows Unter Windows können Sie .NETCoreSDK über Visual Studio installieren. Nach Abschluss der Installation können Sie .NETCore-Projekte über Visual Studio erstellen und ausführen. Li

Leistungsunterschiede zwischen Java-Framework und .NET-Framework Leistungsunterschiede zwischen Java-Framework und .NET-Framework Jun 03, 2024 am 09:19 AM

In Bezug auf die Verarbeitung von Anforderungen mit hoher Parallelität bietet .NETASP.NETCoreWebAPI eine bessere Leistung als JavaSpringMVC. Zu den Gründen gehören: AOT-Frühkompilierung, die die Startzeit verkürzt, wobei Entwickler für die Zuweisung und Freigabe von Objektspeicher verantwortlich sind.

See all articles