Applicazione Web ASP.NET precompilata: errore & # 8220; File System.Web.HttpException nomefile.aspx non è stato precompilato e non può essere richiesto. & # 8221;

StackOverflow https://stackoverflow.com/questions/413221

  •  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).
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top