2017-09-29 2 views
1

Ich möchte meine appsettings.json Datei außerhalb des Web-Ordners, so dass ich vermeiden kann, es in der Quellcodeverwaltung zu speichern. Wie kann ich das machen?Kann ich appsettings.json aus dem App-Verzeichnis entfernen?

+2

Behalten Sie es wo es ist und schließen Sie es nicht in die Quellcodeverwaltung ein? – PmanAce

+0

Wo würden Sie dann zur Laufzeit Einstellungen bekommen? –

+0

... Web veröffentlichen leert den Ordner beim Publizieren. –

Antwort

0

Es scheint relative Pfade nicht zu mögen. Aber das funktioniert ...

public static IWebHost BuildWebHost(string[] args) => 
    WebHost.CreateDefaultBuilder(args) 
     .ConfigureAppConfiguration((hostingContext, config) => 
     { 
      if (!hostingContext.HostingEnvironment.IsDevelopment()) 
      { 
       var parentDir = Directory.GetParent(hostingContext.HostingEnvironment.ContentRootPath); 
       var path = string.Concat(parentDir.FullName, "\\config\\appsettings.json"); 

       config.AddJsonFile(path, optional: false, reloadOnChange: true); 
      } 
     }) 
     .UseStartup<Startup>() 
     .Build(); 

Also, es ist eine andere Einstellungsdatei auf der standardmäßig hinzugefügt Quellen.

2

Wenn Sie es wirklich nicht in Ihrer Quellcodeverwaltung möchten, ist es am besten, es dort zu belassen, wo es ist, und es einfach zu den Ignores für Ihre Quellcodeverwaltung hinzuzufügen, also wird es nie festgelegt, wie von @PmanAce vorgeschlagen.

Ich persönlich denke jedoch, Dateien wie appsettings.jsonsollten verpflichtet werden. Sie dienen im Wesentlichen dazu, die für die Anwendung notwendige Konfiguration zu dokumentieren. Ohne das als Leitfaden, wie sollte jemand wissen, was in der appsettings.json gehen soll, die sie erstellen müssen, weil es nicht in den Pull von Ihrer Quellcodeverwaltung enthalten ist?

Das heißt, es gibt das Problem der Speicherung sensibler Daten zum Nachdenken. Es gibt jedoch andere Möglichkeiten. Sie können andere Konfigurationsmethoden wie Umgebungsvariablen und/oder Benutzergeheimnisse verwenden, um alles in appsettings.json zu überschreiben. Stellen Sie für Dinge wie Verbindungszeichenfolgen einen Platzhalter in Ihrer appsettings.json bereit, sodass selbst dokumentiert wird, dass ein Wert dafür angegeben werden muss. Verwenden Sie jedoch für Ihre persönliche Verwendung Benutzergeheimnisse und/oder Umgebungsvariablen, um diesen Wert mit etwas zu überschreiben echt. Auf diese Weise können Sie appsettings.json frei und sicher festschreiben, um zu dokumentieren, welche Einstellungen für Ihre Anwendung erforderlich sind, ohne dass Sie befürchten müssen, dass persönliche oder geheime Informationen enthalten sind.

+0

Ja, ich lasse appsettings.json im Projekt und es wird bereitgestellt - für Dokumentation und nicht-sensible Einstellungen. Und ja, ich könnte vertrauliche Daten in Visual Studio Online verschlüsselt lassen, aber im Moment ist es am einfachsten, eine übergeordnete Version an anderer Stelle im Dateisystem zu verstecken, so wie ich es tue. –

+0

Haben Sie die Konfiguration tatsächlich über Benutzergeheimnisse versucht (was eine lokale Sache ist, die übrigens nicht Teil von VSTS ist)? Es ist super einfach und funktioniert einwandfrei für die Entwicklung. –

+0

Es ist nur für die Entwicklung. Ich finde es ideal, wenn sensible App-Einstellungen bei der Bereitstellung verschlüsselt werden. Herkömmliche web.config ermöglicht dies. Ich bin mir nicht sicher, ob MVC Core es unterstützt. –

Verwandte Themen