Applicazione Web ASP.NET precompilata: errore & # 8220; File System.Web.HttpException nomefile.aspx non è stato precompilato e non può essere richiesto. & # 8221;
-
03-07-2019 - |
Domanda
Ho creato un progetto di distribuzione Web utilizzando il modello per Visual Studio 2008 per un'applicazione Web ASP.NET 3.5 (non un sito Web).
Ho compilato il progetto che ha creato i file necessari per la distribuzione. Ho copiato le cartelle risultanti (bin, file statici e tutte le cartelle con i segnaposto aspx ecc.) Su un server di gestione temporanea in cui volevo testare l'applicazione.
Se non contrassegno l'opzione " Consenti a questo sito precompilato di essere aggiornabile " , visualizzo questo messaggio di errore su ogni pagina che carico nel browser:
System.Web.HttpException file PAGENAME.aspx has not been pre-compiled, and cannot be requested.
l'ultima riga nella traccia dello stack:
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal( VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +8756366
Se seleziono l'opzione, va tutto bene (immagino perché l'aspx / ascx attuale sono ancora lì nella loro forma originale).
Hai idea di cosa mi manchi qui? C'è qualche impostazione o file speciale che ho dimenticato di copiare?
Grazie!
Note:
- Ho alcuni riferimenti ad assemblee di terze parti
- Ho controllato la cartella bin sul server di gestione temporanea. Contiene l'assembly precompilato che contiene tutte le classi (ho usato Reflector per analizzare l'assembly).
Soluzione
Tutti i file ASPX devono contenere solo
Questo è un file marker generato da lo strumento di precompilazione, e dovrebbe non essere cancellato!
Elimina tutto nella cartella bin e pubblica nuovamente il Web. Assicurati di prendere i file dalla directory in cui hai fatto la pubblicazione.
Assicurati di copiare anche i file .compiled
contenuti nella cartella bin.
Altri suggerimenti
Per la cronaca, ho dimenticato di copiare questi "quotati. compilati" files ( Documentazione MSDN: gestione dei file durante la precompilazione ASP.NET ):
Per i file eseguibili in un Web ASP.NET applicazione, gli assembly del compilatore e file con il nome file .compilato estensione. Il nome dell'assembly è generato dal compilatore. Il Il file .compilato non contiene codice eseguibile. Invece contiene solo le informazioni che ASP.NET deve trovare l'appropriato assemblaggio.
Dopo l'applicazione precompilata è distribuito, ASP.NET utilizza gli assembly nella cartella Bin per elaborare le richieste. L'output di precompilazione include File .aspx o .asmx come segnaposto per pagine. I file segnaposto non contiene codice. Esistono solo per fornire un modo per invocare ASP.NET per a richiesta di pagina specifica e quindi quel file le autorizzazioni possono essere impostate per limitare accesso alle pagine.