Die Konfigurationsdatei 'appsettings.json' wurde nicht gefunden und ist nicht optional

9

Der Azure-Fehler ist:

  

.Net Core: Anwendungsstartausnahme:   System.IO.FileNotFoundException: Die Konfigurationsdatei   'appsettings.json' wurde nicht gefunden und ist nicht optional.

Das ist also ein bisschen vage. Ich kann das nicht niederschreiben. Ich versuche, ein .NET Core Web API-Projekt für Azure bereitzustellen, und ich erhalte diesen Fehler:

  

:( Hoppla. 500 Interner Serverfehler   Beim Starten der Anwendung ist ein Fehler aufgetreten.

Ich habe einfache alte .Net-WebAPIs implementiert, und sie haben funktioniert. Ich habe Online-Tutorials verfolgt und sie haben gearbeitet. Aber irgendwie ist mein Projekt pleite. Das Aktivieren von stdoutLogEnabled in Web.config und Betrachten der Azure-Streaming-Protokolle gibt mir Folgendes:

%Vor%

Ok, das scheint einfach zu sein. Es kann appsettings.json nicht finden. Mit Blick auf meine Konfiguration (startup.cs) scheint es sehr gut definiert zu sein. Mein Startup sieht so aus:

%Vor%

Dies funktioniert lokal gut. Aber sobald wir Azure veröffentlichen, schlägt dies fehl. Ich bin ratlos. Ich habe ein neues .Net-Core-Projekt erstellt, das nur Azure bereitstellen kann. Aber dieses eine Projekt, in das ich all meine Zeit gesteckt habe, scheint zu scheitern. Ich bin bereit, Code aus dem Projekt, das nicht ausgeführt wird, in ein neues Projekt zu kopieren und einzufügen, aber ich bin wirklich neugierig darauf, was das alles kaputt macht.

Irgendwelche Ideen?

BEARBEITEN: Also mein Program.cs war:

%Vor%

Bearbeiten2: Per Frans habe ich die publishOptions überprüft. Es war:

%Vor%

},

Ich habe eine publishOptions aus einem Arbeitsprojekt genommen und zu ::

geändert %Vor%

Es gab immer noch einen Fehler von 500, aber es gab keinen Stack-Trace, der appstings.json laden konnte. Jetzt beschwerte er sich über eine Verbindung zu SQL. Ich habe festgestellt, dass mein SQL-Verbindungsstring-Code in vielen RC1-Blog-Posts erwähnt wird. RC2 von .Net Core hat es geändert. Also habe ich es auf:

aktualisiert %Vor%

Und mein Startup wurde geändert zu:

%Vor%

Schließlich hat es funktioniert.

Ich muss einem älteren RC1 Beispiel gefolgt sein und es nicht bemerkt haben.

    
Frank 26.08.2016, 03:14
quelle

4 Antworten

6

Überprüfen Sie die publishOptions in project.json und stellen Sie sicher, dass der "include" -Abschnitt "appsettings.json" enthält. Sie haben das Veröffentlichungsmodell in RTM so geändert, dass Sie angeben müssen, was Sie aus dem Kompilierverzeichnis in den Webordner kopieren möchten.

    
Frans 26.08.2016, 05:36
quelle
23

In Ihrem project.json

Stellen Sie sicher, dass Sie appsettings.json als copyToOutput

eingegeben haben %Vor%     
firste 08.11.2016 07:58
quelle
21

In späteren .net-Kernversionen wird anstelle der project.json -Datei eine * .csproj -Datei verwendet.

Sie können die Datei ändern, um das gewünschte Ergebnis zu erhalten, indem Sie hinzufügen:

%Vor%     
Jensdc 25.04.2017 19:28
quelle
4

Sie müssen Ihre .json-Datei nicht zu Veröffentlichungsoptionen hinzufügen. es ist nur, dass es nach der Datei auf dem falschen Pfad sucht.

setze den Basispfad und füge dann die json Datei hinzu und es wird funktionieren.

%Vor%

Hier wird der Startkonstruktor mit HostingEnviornment erstellt, und der Basispfad wird auf den aktuellen Stammpfad gesetzt. und es wird funktionieren!

    
S.Akruwala 27.04.2017 06:54
quelle