Messaggio di errore del parser: impossibile caricare il tipo "TestMvcApplication.MvcApplication"


152

Ricevo il seguente errore su uno dei nostri server di produzione. Non sai perché funziona sul server DEV?

Descrizione dell'errore del parser : si è verificato un errore durante l'analisi di una risorsa richiesta per soddisfare questa richiesta. Esaminare i seguenti dettagli di errore di analisi specifici e modificare il file di origine in modo appropriato.

Messaggio di errore del parser : impossibile caricare il tipo "TestMvcApplication.MvcApplication".

Errore sorgente :

Riga 1: <% @ Application Codebehind = "Global.asax.cs" Inherits = "TestMvcApplication.MvcApplication" Language = "C #"%>

File di origine: /global.asax Linea: 1

Non sono sicuro che qualcuno abbia riscontrato questo errore prima e come sia stato risolto, ma ho raggiunto la fine. Qualsiasi aiuto sarebbe apprezzato.

Devo anche menzionare che questo è il codice pubblicato, quindi tutto è compilato. Può esserci qualcosa di sbagliato nelle impostazioni del mio compilatore?



15
Esci da Visual Studio e riavvialo risolto per me.
RickAndMSFT,

cancella il file global.asax e aggiungine uno nuovo, e starai bene.
DotNetGeek l'

Questo mi è successo durante la distribuzione di un'applicazione precedentemente funzionante. Qualcosa in IIS (7) è entrato in cattivo stato; il ripristino di IIS ha risolto il problema.
BurnsBA

Risposte:


169

Nessuna delle altre risposte ha funzionato per me. Ho corretto il mio errore modificando il percorso di output del progetto Web. L'avevo impostato su bin \ debug ma il progetto Web non funziona a meno che il percorso di output non sia impostato semplicemente su "bin"


Questo è stato il mio problema, mi ha causato così tanto dolore perché nessuna delle altre soluzioni qui ha funzionato per me ..
Zack,

3
+1 Anche questo era il mio problema. Il messaggio di errore e l'aiuto su questo è praticamente inesistente. Grazie.
Noldorin,

4
Per me, bin \ stava dando errore, l'ho cambiato solo in bin. e ha funzionato.
Nanu,

1
Per me, il problema era che avevo accidentalmente selezionato x86 come piattaforma attiva e per questa configurazione le impostazioni del progetto erano errate (Bin \ Debug \ x86). Il passaggio a Qualsiasi CPU ha risolto il problema. Ma anche il cambiamento del percorso di output ha funzionato.
Lars Udengaard,

13
Quindi, la modifica del percorso di output da bin \ Debug \ a bin rimuove l'errore per me. Ma la vera domanda è: "Perché bin \ Debug non funziona in primo luogo?" Quando creo una configurazione di debug o di rilascio, voglio che i file vengano generati nella directory bin appropriata.
Ellesedil,

96

L'ho avuto un paio di volte. È particolarmente frustrante perché è subito pronto e il messaggio di errore non ha idea di quale potrebbe essere il problema.

Per risolvere questo problema, fai clic con il pulsante destro del mouse sul titolo del tuo progetto, in questo caso "TestMvcApplication" e fai clic su build .

Ciò impone la compilazione del codice prima di eseguirlo. Non chiedermi perché, ma questa è stata la soluzione il 100% delle volte per me.


4
+1 Anche io. E ho provato diverse cose, e per "cose" intendo "ipotesi selvagge". Buona risposta!
Bob Kaufman,

Nel mio caso avevo IIS che puntava a un sito MVC che non era stato creato prima. Doh. Ovviamente, costruendolo è stato risolto.
Edgar,

5
Ho anche riscontrato questo errore durante la modifica del nome del progetto, ma ho dimenticato di cambiare lo spazio dei nomi utilizzato da global.asax.cs.
Costoso

1
Sei un gentiluomo e un signore, non hai nemmeno pensato di costruirci sopra. Grazie!
Ben Black,

2
Nel mio caso il mio progetto non è stato impostato per essere integrato nelle
Matthew Lock,

24

Ho scoperto che quando sei costretto a usare Configuration Manager per funzionare con x86 o con qualsiasi altra cosa diversa dalle impostazioni "out of the box" del progetto standard, l'IDE crea un gruppo di sottodirectory nella cartella bin per il progetto web.

Una volta che questo ha inizio, se il server Cassini è in esecuzione, il progetto non funziona correttamente.

Ho risolto andando nelle proprietà del progetto Web -> Crea impostazioni e cambiando il percorso di output in bin \

Quindi ricostruire e tutto funziona come dovrebbe.


Bingo, questa è la soluzione che ha funzionato anche per me. Grazie!
moshjeier,

Ha funzionato anche per me - non è un bug?
Matt Wilko,

E controlla se CheckBox è verificato per la compilazione
Daniel Bişar

Se sei mai stato in Ohio, perché ti sto comprando 10 birre, ho esaminato diversi suggerimenti per oltre 3 ore
Andrew Afternoon-Delight Hayde,

9

Dopo una lunga occhiata mi sono imbattuto nel vero problema qui.

Gli assembly sono stati danneggiati dal client FTP che ho usato per caricare i file in un ambiente ospitato.

Ho cambiato il mio client FTP e tutto funziona come previsto.


9

Ho avuto lo stesso problema: il mio era perché il progetto web aveva un target piattaforma di x86. Stavo correndo su una macchina a 64 bit; altri progetti nella soluzione sono stati impostati a 64 bit.

Per verificare le impostazioni, fai clic con il pulsante destro del mouse sul progetto e scegli Proprietà. Nella scheda Genera, controlla il valore di "Target piattaforma".

Controlla anche la configurazione di build della tua soluzione (menu Build> Configuration Manager) per verificare che tutti i tuoi progetti vengano creati sulla stessa piattaforma.

In entrambi i casi, assicurati di controllare le impostazioni sia per il debug che per la modalità di rilascio, altrimenti funzionerai sul tuo computer ma non quando lo distribuirai!


Mi è stato richiesto di combinare questa risposta con la risposta di @brockstaylor di seguito per risolvere questo problema su Umbraco 7.1.6
devinbost

9

Ho provato tutte le soluzioni sopra, ma senza fortuna. L'aggiunta di una riga <add assembly="*" />a web.config l'ha risolto per me. (È anche possibile aggiungere al file machine.config o root web.config della versione .NET Framework appropriata, non l'ho provato) Grazie al supporto MS per la soluzione.


Questo era il mio problema Ho dovuto <assemblies><clear/>...impedire di ereditare i riferimenti di assembly dall'applicazione padre in un'applicazione IIS nidificata.
Craig Celeste,

Non ho mai avuto bisogno di questo .. poi, all'improvviso, ho riscontrato questo problema in una delle mie macchine sviluppatore. Non so perché sia ​​iniziato, ma questa è l'unica cosa che l'ha risolto
Pascal,

9

Ho avuto quello che sembrava lo stesso errore. Ho provato molti suggerimenti da molte pagine solo per scoprire che il problema era che avevo impostato il sito Web sulla versione sbagliata di .Net

Indipendentemente dal numero di ricompilazioni o persone che dicono "problemi di configurazione", nessuno ha sottolineato che la versione .net doveva essere verificata.


8

L'IT succede con me quando rinomino il mio progetto / soluzione. Vai alla cartella del progetto in Windows Explorer (esci da VS). Trova e apri il file Global (forse troverai 2 file, apri che non hanno l'estensione ".asax.cs") e modifica la riga di errore con il percorso corretto. In bocca al lupo!


Questa è un'ottima risposta, dovrebbe essere votata di più: la ridenominazione dell'applicazione avviene e tali errori sono fastidiosi!
Bartosz,

7

Ho riscontrato lo stesso identico problema un paio di giorni fa - per quanto ne so, si trattava di un problema con un IIS a 64 bit che eseguiva un'applicazione Web a 32 bit. Abbiamo modificato il nostro server di produzione a 32 bit e questo problema è scomparso.


5

Assicurarsi che lo spazio dei nomi predefinito nelle proprietà del progetto Web sia uguale allo spazio dei nomi in Global.asax.cs. Avevo modificato lo spazio dei nomi predefinito per renderlo uno spazio dei nomi secondari, cambiandolo indietro risolto questo problema per me.


4

Per completezza ho incluso quale fosse il mio problema e come l'ho risolto:

Se ti piaccio e hai httphandlers via web.config e hai reindirizzamenti dal tuo global.asax.cs (forse in Session_Start ()) come nel mio caso ricevi questo errore se il tuo progetto di avvio non ha un riferimento definito che punta a l'obiettivo su cui punta il tuo httphandler !! (ma non otterrai errori di compilazione, solo errori di runtime)

Così:

  1. Ricontrolla il tuo web.config per eventuali elementi esterni
  2. Controlla che il tuo progetto di avvio abbia tutti i riferimenti di cui ha bisogno.

Saluti.


Avevo aggiunto un controllo Ajax Toolkit ma non avevo aggiunto il riferimento alla DLL. Grazie per il tuo # 2.
pixelmeow

4

L'unica volta che l'ho sperimentato è stato quando il framework MVC non è stato installato sul server. Potrebbe essere così?

Una sezione mancante di Pages in Views \ Web.config potrebbe anche essere in errore.


Non sono sicuro, è un server ospitato e secondo loro ASP .NET MVC funziona bene.
Riaan Engelbrecht,

Ho trovato un'altra persona (con lo zio Google) che ha riscontrato un errore simile per un motivo diverso. Aggiunto link per rispondere. In bocca al lupo!
Daniel Elliott,

3

Ho avuto lo stesso errore e nessuna delle tue soluzioni ha aiutato. Penso che il mio problema fosse semplicemente il nome che avevo scelto per il progetto. Avevo chiamato il mio progetto "interfaccia" che quando ho avuto l'errore di analisi mi ha detto che non poteva caricare:

Linea 1: <% @ Application Codebehind = "Global.asax.cs" Inherits = " @interface .MvcApplication" Language = "C #" %>

Dove c'era un segno "@" per qualche motivo. Immagino che la parola "interfaccia" sia riservata a qualcos'altro e che abbia aggiunto il simbolo @ ma che ovviamente ha rotto qualcosa. Ho eliminato il progetto e ne ho creato uno nuovo con un nome diverso senza problemi.


3

Eccone un altro:

  1. Stavo lavorando a un progetto API Web che utilizzava localhost: 12345.
  2. Ho verificato un ramo diverso dal controllo del codice sorgente contenente lo stesso progetto.
  3. Ho eseguito il progetto sul ramo e ho ricevuto l'errore.
  4. Sono andato su "Proprietà> Web> URL progetto" e ho fatto clic su "Crea directory virtuale"
  5. Viene visualizzata una finestra di dialogo che mi dice che l'URL è stato mappato su una directory diversa (la directory per il progetto originale).
  6. Ho fatto clic su OK e la directory virtuale è stata rimappata.
  7. L'errore è andato via.

Spero che aiuti qualcuno da qualche parte :)


che in realtà l'ha fatto per me!
ra170,

2

Ho avuto molti problemi ed errori da risolvere, alcune delle risposte di cui sopra mi hanno aiutato, ma quale trucco finale ha funzionato per me è stato: vai al tuo progetto, fai clic su Proprietà.

Vai alla scheda Pacchetto / Pubblica Web e assicurati che la configurazione sia impostata su Rilascio e piattaforma su tutte le piattaforme.

Assicurarsi infine che "Elementi da distribuire (si applica a tutti i metodi di distribuzione)" sia impostato su "Tutti i file in questa cartella del progetto"

Quindi ha funzionato bene per me.


2

Questo problema è complicato perché è facile confondere la causa principale con qualunque sia la causa immediata.

Nel mio caso, la causa immediata è stata che la soluzione è configurata per utilizzare NuGet Package Restore, ma il server non era connesso a Internet, quindi NuGet non è stato in grado di scaricare le dipendenze durante la creazione per la prima volta.

Credo che la causa principale sia semplicemente che la soluzione non è in grado di risolvere correttamente le dipendenze. Potrebbe trattarsi di una configurazione del percorso errata, della versione errata di un assembly, di assembly in conflitto o di una distribuzione parziale. Ma in tutti i casi, l'errore sta semplicemente dicendo che non riesce a trovare il tipo specificato in global.asax perché non può costruirlo.


2

Assicurarsi che lo spazio dei nomi nel Global.asaxfile corrisponda a quello nel Global.csfile, ad es

global.asax: Some.Website.Webapplication

Global.cs: Some.Website(meno 'WebApplication')


2

Ho provato la maggior parte delle risposte di cui sopra e non hanno funzionato. Per qualche motivo, semplicemente chiudere e riaprire VS risolto il problema per me.


2

Il mio problema è stato risolto quando ho convertito in IIS la cartella fisica che conteneva i file in un'applicazione. Tasto destro del mouse> converti in applicazione.


1

Per me, è stato perché avevo temporaneamente escluso il file dal progetto. L'ho semplicemente incluso nel progetto e poi ha funzionato.


Anche il mio, nel file della soluzione sono stati rimossi alcuni file e non me ne sono reso conto finché non ho chiuso e riaperto Visual Studio
Fiona - myaccessible.website il

1

Nel mio caso mancava il riferimento a System.Web.MVC dal mio progetto. Ma dopo aver aggiunto il problema dei riferimenti era lo stesso, quindi ho controllato le proprietà della mia cartella Bin che era ReadOnly. Subito dopo averlo reso scrivibile, tutto funziona bene.


1

Stavo ottenendo un errore perché ho distribuito l'applicazione come directory virtuale e stavo ottenendo un errore parser "impossibile caricare il tipo", quindi ho distribuito l'applicazione come sito Web e non ho riscontrato nuovamente quell'errore.


0

Nessuna delle altre risposte ha risolto questo errore per me.
Ho trovato una soluzione che ha funzionato, che consiglio a chi si trova nella stessa situazione:

  1. Chiudi Visual Studio
  2. Cerca Progetti \ tuoProgetto \ tuoProgetto
  3. Rinominare Web.Debug.config e Web.Release.config
  4. Ricostruisci ed esegui la tua applicazione

Eliminati questi ... e ora non riappaiono.
FiringSquadWitness

0

Non sono mai davvero arrivato al fondo di ciò che lo stava causando per me. Penso che da qualche parte mi siano mancati alcuni file. Ho ricevuto l'errore dopo la pubblicazione su un nuovo server. Alla fine ho copiato il sito dal sito di lavoro. Quindi il sito ha funzionato e così ha fatto ulteriori pubblicazioni sul nuovo server.


0

Segui questi passi:

  1. Costruire
  2. Configuration Manager
  3. Inserisci il progetto AnyCPU
  4. Torna a generare
  5. Pronto, dopo questo basta seguire gli stessi passaggi per passarlo a x86 o x64

0

Per me, avevo una DLL inclusa nel mio progetto che doveva essere eseguita in un ambiente a 32 bit.

Il server è stato configurato per eseguire il sito Web in modalità a 32 bit, ma non sono stato in grado di eseguire l'applicazione sul mio computer a 64 bit perché la localhostcartella non era stata specificata per l'esecuzione in modalità a 32 bit.


0

Ho appena avuto un problema simile.

Il motivo era che stavo cambiando un file.aspx.c e dovevo fare una ricostruzione pulita. Dopo che tutto ha funzionato.


0

Il mio problema era che stavo cercando di creare un'applicazione Web ASPX in una sottocartella di una cartella che aveva già un file web.config e

Così ho aperto la cartella principale in Visual Studio come sito Web (Apri> Sito Web) Sono stato in grado di aggiungere una nuova pagina ASPX di articoli senza problemi durante l'analisi / caricamento.


0

Per me, il problema riguardava solo alcuni (lunghi) collegamenti all'interno del sito Web ed è stato rintracciato in URLScan con la configurazione predefinita di un limite di lunghezza URL di 260.


0

Ho avuto lo stesso problema. Prova a:

Fai clic con il pulsante destro del mouse sul progetto e seleziona Pulisci, quindi fai nuovamente clic con il pulsante destro del mouse e seleziona Ricostruisci ed esegui il progetto per vedere se ha funzionato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.