2017-11-21 1 views
7

Ich muss eine Liste der Eigenschaften von appsettings.json Datei (Abschnitt: placeto) in einer Business-Klasse lesen, aber ich konnte nicht auf sie zugreifen. Ich brauche diese Eigenschaften, um öffentlich zu sein.Lesen Sie appsettings.json aus einer Klasse in .NET Core 2

ich fügen Sie die Datei in der Program Klasse:

Class program

Das ist mein appsettings.json:

{ 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Warning" 
    } 
    }, 
    "placeto": { 
    "login": "fsdfsdfsfddfdfdfdf", 
    "trankey": "sdfsdfsdfsdfsdf" 
    } 
} 
+1

Mögliches Duplikat von https://stackoverflow.com/questions/46632090/mvc-core-2-0-how-to-use-an-appsettings-json-file-via-configuration/46632521#46632521 – anserk

+0

Diese Dokumentation von MS erklären, wie man => https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration?tabs=basicconfiguration – CodeNotFound

+0

, aber ich brauche lesen in benutzerdefinierte Klasse, das Beispiel ist in Controllern und ich habe habe verschiedene Möglichkeiten ausprobiert. im .Net-Standard verwendet 'string userName = System.Configuration.ConfigurationManager.AppSettings [" PFUserName "];' zum Lesen von web.config, in .Net-Kern, der äquivalent ist @CodeNotFound –

Antwort

2

Erstens: Verwenden Sie die Standard Program.cs fügt bereits Konfiguration für Sie:

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     BuildWebHost(args).Run(); 
    } 

    public static IWebHost BuildWebHost(string[] args) => 
     WebHost.CreateDefaultBuilder(args) 
      .UseStartup<Startup>() 
      .Build(); 
} 

Zweitens eine Schnittstelle für Ihre Klasse erstellen und die Konfiguration mit Dependency Injection passieren, indem Iconfiguration Feld:

private readonly IConfiguration Configuration; 

dann vorbei contructor:

public Test(IConfiguration configuration) 
{ 
    Configuration = configuration; 
} 

eine Schnittstelle erstellen für Ihre Klasse, um Dependency Injection so zu verwenden, Sie können, ohne dass Instanzen davon erstellen IConfiguration es

Hier ist die Klasse und Interface sind weitergeben müssen:

using Microsoft.Extensions.Configuration; 

namespace GetUserIdAsyncNullExample 
{ 
    public interface ITest 
    { 
     void Method(); 

    } 
    public class Test : ITest 
    { 
     public Test(IConfiguration configuration) 
     { 
      Configuration = configuration; 
     } 

     private readonly IConfiguration Configuration; 
     public void Method() 
     { 
      string here = Configuration["placeto:login"]; 
     } 
    } 
} 

Dann in Ihrem startup.cs implementieren Dependency Injection für Ihre Klasse durch den Aufruf:

services.AddSingleton< ITest, Test>(); 

in Ihrer ConfigureServices Methode

jetzt können Sie Ihre Klassen zu jeder Klasse vorbei Dependency Injection verwenden zu

zum Beispiel, wenn Sie ExampleController haben, dass Sie Ihre Klasse verwenden möchten, tun Sie folgendes:

private readonly ITest _test; 

    public ExampleController(
     ITest test 
    ) 
    { 
     _test = test; 

    } 

Und jetzt haben Sie _test-Instanz, um überall in Ihrem Controller zugreifen.

Verwandte Themen