2016-08-18 2 views
1

TLDRASPNETCORE arbeitet vor Ort in VS 2015, aber Fehler 500, wenn auf Azure veröffentlicht

Ein zuvor arbeiten (Vorversion) auf Azure geschoben gibt nun einen nicht-deskriptiven Fehler 500, läuft aber ohne Problem auf zwei verschiedenen lokale PCs. Ich bin nicht in der Lage, die Ursache zu ermitteln und auf etwas Hilfe zu hoffen.

Einzelheiten

Ich habe eine ASP.NET-Core Web App, die ich entwickeln habe. Die App läuft ohne Probleme lokal (sowie auf einem anderen PC, wo ich das Projekt von meinem privaten Git geklont.)

Ich habe jedoch veröffentlicht, um meine Azure Web App (etwas, was ich vor Monaten mit einer früheren Version) und jetzt es versagt (dies eine neu Web-App-Instanz erstellt ist.) ich habe eine ziemlich allgemeine Fehler 500 Seite zurückgekehrt bin, wenn ich versuche, die App zu sehen ...

:(error 500

ich endlich den Protokollstrom überprüfte nach dem Lesen this und gräbt im azurblauen Portal herum, und es wurde eine Fehlerseite mit mehr Informationen zurückgegeben, aber immer noch nicht wirklich etwas Nützliches.

:(error 500 with details

Inspiriert von this SO answer wechselte ich meinen Umwelt-Flag (ASPNETCORE_ENVIRONMENT) zu Development in dem Azure „Application Setting“ Klinge und gab ihm einen Schuss (so konnte ich das Ergebnis sehen.) Ich war zögerlich zu tun Das liegt daran, dass meine SQL-Verbindungszeichenfolge dort ist und abhängig von der Umgebung variiert (dev ist lokal, prod ist azure sql), so dass mir irgendwann ein Fehler garantiert wurde (wenn versucht wird, die db zu treffen.) Dies gab mir ein sehr nützliches und bizarre Fehlermeldung über app.UseDeveloperExceptionPage() im Configure Methode ...

IO error, missing application.Development.json

Es behauptet, dass meine appsettings.Development.json nicht vorhanden ist! Wie um alles in der Welt schaffte es das nicht in den Publish Push ?!

Relevante Linien von Startup.cs ...

public Startup(IHostingEnvironment env) { 
    var builder = new ConfigurationBuilder() 
     .SetBasePath(env.ContentRootPath) 
     .AddJsonFile("appsettings.json") 
     .AddJsonFile($"appsettings.{env.EnvironmentName}.json") 
     .AddEnvironmentVariables(); 

    Configuration = builder.Build(); 
} // LINE 41 reported 

FTP'ing in die/site/wwwroot Ich sehe, dass die Datei tatsächlich nicht vorhanden ist (aber die generisch und Produktion diejenigen sind.) Ist VS irgendwie filtern diese oder stellen Sie eine Umgebungsvariable für das Verpacken ein, wenn Sie Freigabe oder Fehlersuche wählen? Ich habe im Paket/Veröffentlichungsprotokoll keinen Hinweis darauf gefunden.

publish settings screen

So wechselte ich die Umgebungsvariable auf ‚Produktion‘ zurück und neu gestartet wird den Web-App von der „Übersicht“ Klinge (für alle Fälle). Dann zog ich die app.UseDeveloperExceptionPage Linie aus dem if (env.IsDevelopment()) { Block (So ist es immer verfügbar.) Erstellen, erneut veröffentlichen (das Kontrollkästchen "Entferne zusätzliche Dateien am Ziel" aktiviert, dauert länger zum Löschen und dann schieben alles, aber besser sicher), und aktualisiert die Seite, und ich bin zurück an die generische Fehlermeldung 500 (keine weiteren Details) erneut ...

:(error 500 with details

Ich weiß, dass customErrorsis no longer relevant, als Beweis durch mein Sehen das Ergebnis der UseDeveloperExceptionPage zuvor.Zusätzlich habe ich „Detaillierte Fehlermeldungen“ aktiviert ...

Diagnostic blade settings

Was auf der Erde bin ich dabei ?!

EDIT1: meinem lokalen dev env Flag Einstellung auf "Produktion" in launchSettings.json ...

"environmentVariables": { 
    "ASPNETCORE_ENVIRONMENT": "Production" 
    } 

... und alles funktioniert immer noch gut! Trotzdem Fehler 500 auf Azure!

EDIT2: Ich erkennen, warum appsettings.Development.json nicht veröffentlicht war immer, es in meinem project.json ‚s publishInclude Abschnitt war nicht ...

"publishOptions": { 
    "include": [ 
     "wwwroot", 
     "Views", 
     "appsettings.json", 
     "appsettings.Production.json", 
     "web.config" 
    ] 
    }, 

... immer noch nicht klar, warum nach den app.UseDeveloperExceptionPage() bewegen Außerhalb der Umgebungsprüfung konnte ich die Entwicklerausnahmeseite nicht sehen. Aber jetzt merke ich, dass es wahrscheinlich andere fehlende Dateien gibt, die nicht veröffentlicht werden (egal welche Umgebung!)

Antwort

0

Es war die publishOptions nicht alle .json Dateien die App benötigt, um anwesend zu sein ... ugh.

Verwandte Themen