2016-08-29 4 views
4

Ich hatte eine Anwendung in der Produktion mit. NET-Kern RC1 läuft auf IIS. Ich habe die Anwendung neu geschrieben, weil das Unternehmen es auf .net core1 wollte, da dies die offizielle Version ist.asp.net core 1 appsettings.production.json nicht aktualisieren Verbindungszeichenfolgen

In meiner .net RC1-Kernanwendung hatte ich config.json und config.production.json und in der Produktionsversion habe ich einfach die Einstellungen, die ich wollte, wie die Verbindungszeichenfolge überschrieben. Das hat gut funktioniert.

In .net core1 Ich habe appsettings.json und appsettings.production.json. Die Verbindungszeichenfolge scheint jedoch nicht aktualisiert zu werden. Es scheint die localdb von der ursprünglichen appsettings.json zu verwenden.

appsettings.json:

{ 
    "ConnectionStrings": { 
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-DecisionEff-b32ae861-2422-4f88-839c-2a6d599fee45;Trusted_Connection=True;MultipleActiveResultSets=true" 
    }, 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Debug", 
     "System": "Information", 
     "Microsoft": "Information" 
    } 
    } 
} 

appsettings.production.json:

{ 
    "ConnectionStrings": { 
     "DefaultConnection": "Server=mydb.server;Database=DbName;User ID=User;Password=password;Trusted_Connection=False; Connection Timeout= 30;" 
    } 
} 

In meiner Startdatei zu tun habe ich es für die Produktion aussieht gesetzt:

var builder = new ConfigurationBuilder() 
       .SetBasePath(env.ContentRootPath) 
       .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 
       .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true); 

Die oben wurde nach dem modelliert, was ich in RC1 tat, das funktionierte. Gab es etwas anderes, das sich veränderte, sodass die Verbindungszeichenfolgen nicht angepasst wurden? Wenn ich die Produktions-DB-Verbindungszeichenfolge in die appsettings.json-Datei einfüge, funktioniert die Anwendung auf unserem Produktionsserver einwandfrei. Daher wird die Einstellung nicht aus der appsettings.production.json-Datei abgerufen. Ich weiß, dass es die Umgebung richtig liest, weil ich es drucke und es ist wie erwartet.

Wie stellen Sie verschiedene DB-Einstellungen für Entwicklung und Produktion in der .net core 1 Web App bereit?

Jede Hilfe wäre willkommen. Ich übersehe offensichtlich etwas.

UPDATE: Als ich das auf meinem lokalen Rechner laufen ASPNETCORE_ENVIRONMENT zu Produktionseinstellung verwendet es die richtige Verbindungszeichenfolge. Die Webanwendung sieht also die richtige Umgebung für die Produktion und kann die Verbindungszeichenfolge verwenden. Gibt es etwas, das während des Builds konfiguriert werden muss, um die verschiedenen Umgebungseinstellungen zu senden? Oder gibt es eine Möglichkeit, die verschiedenen Einstellungen aus den .json-Dateien für die Umgebungen auszudrucken?

UPDATE 2: Ich habe bemerkt, dass, wenn ich die Anwendung veröffentlichen die es nur appsettings.json ist, die nur die localdb Verbindung hat. Es scheint keine appsettings.production.json Datei zu generieren. Gibt es irgendwo während des Builds eine Stelle, an der diese verschiedenen Einstellungen angezeigt werden sollen?

+2

Wahrscheinlich ist Ihr Problem, diese Frage im Zusammenhang http://stackoverflow.com/questions/37858312/dotnet-publish-doesn%C2%B4t-publish-correct-appsettings-env-environmentname-json –

+0

Das war es. Dies ist anders als die RC1-Vorlage. Bevor Sie angegeben, schließt aus. – Xaxum

Antwort

0

Sie haben wahrscheinlich vergessen, die Umgebungsvariable festzulegen, die die Umgebung festlegt. Sie haben zu setzen ASPNETCORE_ENVIRONMENT-Production

+0

Victor danke. Nee. Ich habe dieses Set und die App erkennt das env korrekt, weil ich es ausdrucke. Auf Dev habe ich es Druck-Dev und Prod ist prod usv.IsDevelopment, env.IsProduction. – Xaxum

Verwandte Themen