Vorkompilierte ASP.NET Web-Anwendung: Fehler „System.Web.HttpException Datei filename.aspx hat vorkompiliert nicht, und nicht angefordert werden kann.“
-
03-07-2019 - |
Frage
Ich habe ein Web-Deployment-Projekt mit der Vorlage für Visual Studio 2008 für eine ASP.NET 3.5 Web-Anwendung (nicht Website) erstellt.
ich das Projekt zusammengestellt, die die Dateien für die Bereitstellung benötigt erstellt. Ich kopierte die resultierenden Ordner (ist, statische Dateien und alle Ordner mit den aspx Platzhalter etc.) zu einem Staging-Server, auf das ich die Anwendung testen wollte.
Wenn I nicht Flagge die Option "Lassen Sie diese vorkompilierte Site aktualisierbar sein" , erhalte ich diese Fehlermeldung auf jeder Seite, die ich in dem Browser laden:
System.Web.HttpException file PAGENAME.aspx has not been pre-compiled, and cannot be requested.
die letzte Zeile in dem Stack-Trace:
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal( VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +8756366
Wenn ich die Option, alles ist in Ordnung (ich schätze, weil die tatsächliche aspx / ascx ist immer noch da in ihrer ursprünglichen Form).
Jede Idee, was ich hier fehlt? Gibt es eine Einstellung oder spezielle Datei, die ich vergessen zu kopieren?
Danke!
Weitere Informationen:
- Ich habe ein paar Verweise auf Drittanbieter-Baugruppen
- Ich habe den Ordner ist auf dem Staging-Server überprüft. Es enthält die vorkompilierte Baugruppe, die alle Klassen enthält (I verwendet Reflector die Baugruppe zu analysieren).
Lösung
Alle ASPX-Dateien sollten nur enthalten
Dies ist eine Marker-Datei generiert durch das Precompilieren Werkzeug und sollte nicht gelöscht werden!
alles in Ihren bin-Ordnern löschen und das Web wieder veröffentlichen. Achten Sie darauf, nehmen Sie die Dateien aus dem Verzeichnis, in dem die Veröffentlichung hat.
Stellen Sie sicher, dass Sie die .compiled
Dateien, die in dem Ordner ist zu kopieren.
Andere Tipps
Für das Protokoll, ich habe vergessen, diese ".compiled" Dateien ( MSDN-Dokumentation: Dateibehandlung bei der ASP.NET-Vorkompilierung ):
Für ausführbare Dateien in einer ASP.NET Web Anwendung der Compiler-Baugruppen und Dateien mit dem Dateinamen .compiled Erweiterung. Der Montag Name ist vom Compiler erzeugt wird. Das COMPILED Datei enthält keine ausführbarer Code. Stattdessen enthält es nur die Informationen, die ASP.NET muss die entsprechende finden Montage.
Nach der vorkompilierte Anwendung ist eingesetzt werden, verwendet ASP.NET die Baugruppen im Ordner Bin Anforderungen zu verarbeiten. Die Ausgabe enthält Precompilieren aspx oder .asmx Dateien als Platzhalter für Seiten. Die Platzhalter-Dateien enthalten keinen Code. Sie existieren nur zu bieten eine Möglichkeit, ASP.NET aufzurufen für eine bestimmte Seite Anfrage und damit Datei Berechtigungen können so eingestellt werden, beschränken Zugriff auf die Seiten.