2017-11-14 4 views
0

Ich habe eine asp.net Core 2 Webapi-Service. Ich möchte appsettings.json lesen, aber ich kann es nicht herausfinden. Wie üblich, wenn ich im Internet suche, bekomme ich ein Dutzend völlig verschiedene Antworten, basierend auf verschiedenen Versionen des Frameworks, die letztlich nicht zu funktionieren scheinen.lesen appSettings von asp.net core webapi

Als Beispiel appsettings.json:

"AppSettings": { 
    "Domain": "http://localhost" 
} 

Erstens ich das versucht:

Hinzugefügt über nuget Microsoft.Extensions.Configuration und Microsoft.Extensions.Configuration.Json

In meinem ConfigureServices Methode ich fügte hinzu:

services.AddSingleton<IConfiguration>(Configuration); 

In meiner Kontrolle er injiziert ich die config:

IConfiguration iconfig; 
public ValuesController(IConfiguration iConfig) 
{ 
    iconfig = iConfig; 
} 

es abzurufen:

return "value: " + iconfig.GetValue<string>("AppSettings:Domain"); 

kann ich die Controller-Konstruktor wird aufgerufen und Leiten in einer Config, aber der Wert ist immer null sehen.

Ich habe festgestellt, dass Startup bereits in einer IConfiguration übergibt. Ist es eine weitere Änderung in der Implementierung und ich muss etwas anderes tun?

[Bearbeiten] ich jetzt https://joonasw.net/view/aspnet-core-2-configuration-changes

Was sagt alles ändern ist wieder und es wird automatisch injiziert gelesen haben, aber den Code nach folgendem es eigentlich nicht sagen, wie Sie in Ihre Hände auf die Daten bekommen Dein Controller.

+0

Inject 'IConfigurationRoot' in Ihrem Controller und dann Zugriff auf Ihren Wert wie folgt aus:' config [ "AppSettings: Domain"] ' – peinearydevelopment

+0

Der Code, den Sie funktioniert gut für mich auf dem Laufenden. Ich musste nur die _appsettings.json_ beheben, weil das, was Sie gepostet haben, kein gültiger json ist. – anserk

Antwort

0

Sie einen Blick auf meine Antwort hier nehmen: https://stackoverflow.com/a/46940811/2410655

Grundsätzlich Sie eine Klasse erstellen, die die Eigenschaften entspricht, die Sie in appsettings.json Datei definieren (In der Antwort ist es die AppSettings Klasse).

Und dann in ConfigureServices(), injizieren Sie diese Klasse mit services.Configure<>. Diese Klasse wird in allen Controllers von DI verfügbar sein.

Um auf seine Daten zuzugreifen, können Sie sich @amans ursprünglichen Fragenbeitrag über den obigen Link ansehen.

public class HomeController : Controller 
{ 
    private readonly AppSettings _mySettings; 

    public HomeController(IOptions<AppSettings> appSettingsAccessor) 
    { 
     _mySettings = appSettingsAccessor.Value; 
    } 
} 
Verwandte Themen