2009-01-05 10 views
5

Ich habe ein Webbereitstellungsprojekt mithilfe der Vorlage für Visual Studio 2008 für eine ASP.NET 3.5-Webanwendung (keine Website) erstellt.Vorkompilierte ASP.NET-Webanwendung: Fehler "System.Web.HttpException-Datei filename.aspx wurde nicht vorkompiliert und kann nicht angefordert werden."

Ich kompilierte das Projekt, das die Dateien für die Bereitstellung erstellt. Ich kopierte die resultierenden Ordner (bin, statische Dateien und alle Ordner mit den Aspx-Platzhaltern etc.) auf einen Staging-Server, wo ich die Anwendung testen wollte.

Wenn ich nicht Flagge die Option „Lassen Sie diese vorkompilierte Site aktualisierbar sein“, erhalte ich diese Fehlermeldung auf jeder Seite, die ich in den 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 der tatsächliche aspx/ascx noch dort in ihrer ursprünglichen Form ist).

Irgendeine Idee, was ich hier vermisse? Gibt es eine Einstellung oder spezielle Datei, die ich vergessen habe zu kopieren?

Vielen Dank!

Hinweise:

  • Ich habe ein paar Verweise auf Drittanbieter-Baugruppen
  • ich den Ordner ist auf dem Staging-Server überprüft habe. Es enthält die vorkompilierte Assembly, die alle Klassen enthält (Ich habe Reflector verwendet, um die Assembly zu analysieren).

Antwort

7

die ASPX sollten nur alle Dateien enthalten

Dies ist eine Marker-Datei von das Precompilieren Tool generiert und sollte nicht gelöscht werden!

Löschen Sie alles in Ihrem bin-Ordner und veröffentlichen Sie das Web erneut. Stellen Sie sicher, dass Sie die Dateien aus dem Verzeichnis beziehen, in dem Sie die Veröffentlichung durchgeführt haben.

Stellen Sie sicher, dass Sie auch die im Ordner bin enthaltenen Dateien .compiled kopieren.

+0

Vielen Dank für Ihre Antwort! Es enthielt nicht die genaue Lösung, aber es führte mich dazu, die Mülleimer-Ordner erneut zu überprüfen. Ich habe vergessen, die ".compiled" -Dateien in meinem automatisierten Kopiervorgang auf den Server zu kopieren. Ich werde deine Antwort bearbeiten und akzeptiere sie. – splattne

1

Für das Protokoll, ich habe vergessen, diese "COMPILED" -Dateien (MSDN documentation: File Handling During ASP.NET Precompilation) zu kopieren:

Für ausführbare Dateien in einer ASP.NET Web Anwendung, die Compiler-Baugruppen und Dateien mit der .compiled Dateiname Erweiterung. Der Assemblyname ist , der vom Compiler generiert wird. Die .compiled-Datei enthält keinen ausführbaren Code. Stattdessen enthält es nur die Informationen, die ASP.NET muss die passende Assembly finden.

Nach der vorkompilierten Anwendung ist im Einsatz, ASP.NET verwendet die Assemblys im Ordner Bin, um Anforderungen zu verarbeiten. Die Precompilationsausgabe enthält ASPX- oder ASMX-Dateien als Platzhalter für Seiten. Die Platzhalterdateien enthalten keinen Code. Sie existieren nur bieten eine Möglichkeit zum Aufrufen von ASP.NET für eine spezifische Seitenanforderung und so Datei Berechtigungen können festgelegt werden, um Zugriff auf die Seiten zu beschränken.

Verwandte Themen