Errore: allowDefinition = 'MachineToApplication' oltre il livello dell'applicazione


193

Ho scaricato il progetto online in ASP.Net. Durante l'esecuzione dell'applicazione viene visualizzato un errore

È un errore utilizzare una sezione registrata come allowDefinition = 'MachineToApplication' oltre il livello dell'applicazione. Questo errore può essere causato da una directory virtuale non configurata come applicazione in IIS.

Quali modifiche dovrei apportare in web.config o altrove per farlo funzionare?


53
Nessuna delle risposte trovate sul web ha funzionato per me. Il mio problema è stato risolto mostrando tutti i file / cartelle nascosti ed eliminando la objcartella.
The Muffin Man

6
Questo problema si manifesta ancora in VS2012. Ho aperto una segnalazione di bug con Microsoft. Chiunque riscontri il problema, per favore vota la segnalazione bug connect.microsoft.com/VisualStudio/feedback/details/779737/…
Eric J.,

4
l'eliminazione della cartella obj ha risolto anche questo problema per me. grazie @Nick! (scusate il risveglio)
Jordan Wayne Crabb,


nel mio caso, il web.config aggiuntivo in una sottocartella causa questo problema. Quando rimuovo quel web.config aggiuntivo l'errore scompare
Dio Phung l'

Risposte:


96

Ho appena incontrato questa "delizia". Sembra presentarsi subito dopo che ho pubblicato un'applicazione Web in modalità di rilascio.

L'unico modo per aggirare costantemente il problema che ho riscontrato è seguire questa lista di controllo:

  1. Soluzione pulita mentre la soluzione è configurata in modalità Rilascio.
  2. Soluzione pulita mentre la soluzione è configurata in modalità Debug.
  3. Crea mentre la tua soluzione è configurata in modalità Debug.

18
L'unica risposta che ha funzionato anche per me. Ho avuto molti altri errori che mi aspettavano dopo questo, ma non erano correlati. Sono arrivato qui impostando MvcBuildViewsa true.
Benjamin,

+1 BTW: Penso che il motivo per cui ha funzionato per me sia stato il fatto che l'ultima build che ho avuto è stata Debug . Ho aperto la soluzione, fatto una correzione di bug e ho provato a compilare in modalità R Release . La pulizia in Release non ha funzionato ma la pulizia in Debug ha funzionato. (Probabilmente una combinazione di 2 era ciò di cui si aveva bisogno, vale a dire ripulire eventuali vecchi riferimenti alle dll, sia Debug che Release ).
Scotty.NET,

4
Ho fatto una pulizia , poi sono andato a * proprietà del progetto -> Web -> Crea directory virtuale e quindi il problema è stato risolto
gldraphael

Una pulizia e ricostruzione mentre sono in modalità debug sono tutto ciò che è necessario per me. Non è necessario alternare tra rilascio e debug. Sì, il CLEAN è molto importante. Questo è il nocciolo della questione.
markaaronky,

1
Clean non è disponibile nel mio caso, che non ho mai visto prima. Questa è una vecchia applicazione VB.NET che ho ereditato da un ex collega.
tnk479,

82

Mi sono appena imbattuto in questo post e mi stava succedendo.
Solo Cleanil progetto e l'errore scompaiono. (deve essere un bug VS2010)


questa soluzione se viene visualizzato come errore in Visual Studio.
Gideon,

22
A volte clean non cancella la objcartella. Questo a volte ha bisogno anche di essere cancellato.
jaypeagi,

1
Né Clean né eliminazione di obj hanno funzionato. La soluzione di Johnny Reilly ha funzionato per me.
Benjamin,

Ho dovuto correre pulito in entrambe le modalità di debug e rilascio per sbarazzarmi di questo. Eseguirlo solo per il debug non sembrava risolvere il problema.
Juha Palomäki,

Lo stesso problema esiste ancora in VS2013SP1. Una semplice pulizia mi consente di distribuire di nuovo.
Brian Knoblauch,

25

Ho appena avuto questo problema durante la creazione di una seconda versione del mio sito Web. Non è successo quando l'ho costruito la prima volta.

Ho appena eliminato le cartelle bin e obj, ho eseguito una soluzione pulita e l'ho ricostruita, questa volta senza alcun problema.


2
Questa è l'unica soluzione che ha funzionato per me in VS Express 2012 per il Web. Inoltre, ho iniziato a ricevere questo errore solo dopo aver creato una configurazione della soluzione e aggiunto MvcBuildViews impostato su true al gruppo di proprietà nell'origine .csproj.
Jeremy Cook,

20

Nessuna. È necessario impostare la directory in cui è stato inserito il sito Web come applicazione Web in IIS .


1
Anche se tecnicamente questo è un cambiamento "altrove per far funzionare questo";)
Zhaph - Ben Duguid

2
e questa è la soluzione se ricevi questo errore nella tua app web! = P
Gideon,

Ero già installato come un'applicazione. La soluzione di Johnny Reilly ha funzionato nel mio caso.
Benjamin,

Sto solo cercando di far funzionare l'app Webforms modello. Va bene su localhost ma non su un server sulla LAN. Questa soluzione ha funzionato per me: VS2015 CE, Windows Server 2008 sulla mia LAN. Ho usato questa pagina MS per spiegare cosa fare su IIS: support.microsoft.com/en-gb/kb/917413 . Nessuna modifica al codice modello.
Tim

16

Questo errore si verifica quando si tenta di aprire un progetto come sito Web. Il modo più semplice per determinare se hai creato un sito Web o un progetto è controllare la cartella della tua soluzione (ovvero dove hai salvato il codice) e vedere se hai un file * .sln nella directory principale, se lo fai allora ' ho creato un progetto.

Solo per aggiungere, ho riscontrato questo errore proprio ora quando ho tentato di aprire un progetto che ho creato qualche tempo fa selezionando "File", "Apri sito Web" dai menu di Visual Studio mentre avrei dovuto selezionare "File", "Apri progetto" anziché. Mi sono imbattuto appena mi sono reso conto :)


anche questo era il mio problema
Mons.

13

In Visual Studio 2013 ho lottato con questo per un po 'ed è praticamente facile da risolvere, basta seguire ciò che dicono le eccezioni "directory virtuale non configurata come applicazione in IIS"

Nel mio caso mi ero WebServicepiantato dentro IIS websitecosì

  1. Ho aperto il sito Web in Gestione IIS
  2. tasto destro del mouse sulla cartella WCF
  3. cliccato Convert to Application
  4. e quindi inviato con Ok

WCF è di nuovo funzionante.


1
Stavo riscontrando questo problema quando ho spostato la mia applicazione sul sito Web predefinito. Il punto 3 ha fatto il trucco per risolvere il mio problema.
bikram s.

Questo ha funzionato per me quando ci siamo trasferiti su un nuovo server web. Dopo aver eseguito "Converti in applicazione", il simbolo della cartella è cambiato e la webapp ASP.NET MVC ha iniziato a funzionare su quel server Web.
Greg Barth,

11

L'errore suggerisce che il codice che stai utilizzando si aspetta che una directory virtuale venga configurata su IIS.

Cerca la documentazione e aggiungi la directory virtuale richiesta. Dovrebbe essere una directory che contiene web.configal suo interno (non la directory principale).


8
La rimozione di un secondo web.config in una directory inferiore ha risolto il problema per me.
Lucas B,

10
Uno dei miei ragazzi ha avuto la sua <authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>nella sua Web.confignella Viewscartella tronco piuttosto allora, che ha causato questo problema.
Serj Sagan,


8

Una recente modifica di web.config potrebbe essere nel file web.config errato.

Una <machineKey...>proprietà era stata aggiunta a Views / web.config . Non importa quanti Pulisce e Ricostruisce l'errore è rimasto. La correzione era spostare la proprietà nella radice /web.config .


Abbiamo accidentalmente copiato Web.config principale nella cartella / Views. Inserisci la versione originale, molto più piccola per la cartella Views e il sito ha funzionato di nuovo.
Grandizer,

6

se dovessi riscontrare questo errore

È un errore utilizzare una sezione registrata come allowDefinition = 'MachineToApplication' oltre il livello dell'applicazione. Questo errore può essere causato da una directory virtuale non configurata come applicazione in IIS

SOLUZIONE
Ho avuto lo stesso problema con VS 2012. Ho risolto questo problema

  1. Scarica il tuo progetto attuale
  2. modifica il tuo .csproj
  3. Trova questo <MvcBuildViews>false</MvcBuildViews>
  4. Invece di falso, modifica il valore in vero
  5. Carica di nuovo il tuo progetto e non dovresti avere più questo errore

Se hai una soluzione, allora è eliminare il contenuto della cartella obj nel progetto generato dal compilatore.


18
Questo è strano, l'impostazione MvcBuildViewsper trueè come ho ottenuto l'errore, in primo luogo.
Benjamin,

Ho anche iniziato a ricevere il messaggio di errore dopo aver modificato MvcBuildViews su true. Mi sono sbarazzato del messaggio di errore cambiando il valore in false.
Juha Palomäki,

3
Ho fatto una "soluzione pulita" in entrambe le modalità di rilascio e debug e ora la build funziona anche con<MvcBuildViews>true</MvcBuildViews>
Juha Palomäki,

@ JuhaPalomäki super dolce! Grazie.
Haroon,

Ho avuto esattamente la situazione opposta a quella di @visar_uruqi. Voglio dire nel mio file .csproj avevo l'opzione MvcBuildViews impostata su true e quando ho impostato su false l'errore è stato omesso (non mostrato).
Bronek,

5

Nel mio caso, il problema è apparso solo dopo aver pubblicato il progetto nella sottodirectory. A causa della mia mancanza di conoscenza, ho inserito la mia web_publishsottodirectory nella web_projectdirectory.

È chiaro che web_publishcontiene anche gli stessi contenuti Web.configdel progetto. Tuttavia, il web_projectnon sa che my web_publishdovrebbe essere evitato quando si cerca Web.configs nelle sottodirectory nidificate. In questo modo, gli Web.configs sono stati duplicati e l'errore è apparso.

La soluzione era di collocare il mio web_publishaltrove.


5

Nel mio caso c'era una cartella "Backup" che conteneva un'altra copia dell'intero sito web. Ciò significava un altro web.confige quindi la build non è riuscita con questo errore. Ho eliminato la cartella "Backup", ho fatto una soluzione pulita sulle build di debug e rilascio e l'errore è scomparso.


Ho avuto una situazione simile, qualcuno aveva creato una sottocartella "Pubblicato" all'interno della radice del sito Web sul disco (questo è un vecchio progetto Web, uno di quelli senza file di soluzione), e questo conteneva un Web.config. L'errore si è verificato quando Visual Studio ha provato a crearlo e, naturalmente, nessuna quantità di Pulizia / Eliminazione di cartelle "obj" ecc. Ho visto alcuni casi di questo errore, ed è quasi sempre un Web.config duplicato che si nasconde da qualche parte ... (anche un messaggio di errore davvero scadente!)
Dettaglio

4

Nel mio caso,

La soluzione contiene 6 progetti, 1 principale e 5 sottodirectory. tutte le sottodirectory che hanno web.config.

Durante l'esecuzione di qualsiasi pagina all'interno di sottodirectory, ho riscontrato lo stesso errore.

Ho rimosso questa riga da web.config,

<authentication mode="Windows"/>

quello ha funzionato per me.


Che linea hai rimosso?
Mark Berry,

La linea era lì ma non mostrava a causa di qualche problema di rientro, immagino. Ho modificato e incollato il codice in un blocco di codice, ora mostra. Per favore controlla e fammi sapere se potrei aiutare in qualcosa.
p_champ,

Grazie, ciò conferma la linea che stava fallendo anche per me. Ho solo un sito, quindi l'ho aggirato aprendo un sito Web anziché un progetto.
Mark Berry,

4

Pulisci il tuo progetto Rimuovere la cartella / obj (probabilmente usando la pubblicazione e la distribuzione? - è presente un bug)


L'unica soluzione che ha funzionato per me. È arrivato qui impostando <MvcBuildViews> true </MvcBuildViews>.
Paul,

3

Il mio problema era che avevo accidentalmente pubblicato il mio servizio web in una posizione pre-completata su una nuova installazione di VS2010.

Avevo pubblicato in una cartella chiamata PreCompiledWeb e sospetto che la presenza del web.config lo abbia incasinato.

Ho semplicemente cancellato la cartella e aggiornato il progetto.

Facendo doppio clic su questo errore, mi ha portato a quel file web.config errato, che mi ha interrotto.


2

Potrebbe essere il problema della versione come il download del progetto di .Net framework 2.0 e si desidera aprirlo in VS2008, quindi sarà necessario eseguire l'aggiornamento alla versione più recente e VS creerà il backup della cartella nella stessa directory principale. ottieni la risposta qui .


La risposta di ranganh qui fornisce ulteriori dettagli.
Mark Berry,

2

Ho riscontrato questo errore durante la creazione della soluzione con Web Deployment Project creato nella mia soluzione. Risolvo l'errore eliminando la cartella in cui è stato creato il progetto di distribuzione Web. Questa cartella è specificata nell'attributo "Cartella progetto" delle proprietà WDP


2

Elimina le cartelle bin e obj. Quindi ricostruire la soluzione.


Per Esplora file, utilizzare la query di ricerca "obj" tipo: = cartella e "bin" tipo: = cartella per trovare / eliminare queste cartelle. Questo ha funzionato per me.
Robert J. Good,

2

Apparentemente c'erano due file web.config nella mia soluzione. Sto usando MVC4 e c'era un altro file di configurazione in Views e stavo facendo la modifica nel file sbagliato. Risolto lì mi ha aiutato.

Ma puoi sempre modificare il reindirizzamento / route predefinito nel file global.asax.


1

Probabilmente hai una cartella di progetto sotto asp.net all'interno della cartella del progetto che non è configurata come directory virtuale. Configurare il progetto per l'esecuzione in IIS.



1

Ho questo problema più frequente se "vero" è abilitato nel file di progetto.

  1. Imposta falso

Come dice Jonny:

  1. Soluzione pulita mentre la soluzione è configurata in modalità Rilascio.
  2. Soluzione pulita mentre la soluzione è configurata in modalità Debug.
  3. Crea mentre la tua soluzione è configurata in modalità Debug.

1

Avevo un progetto che non volevo essere un'applicazione Web, volevo che fosse una cartella. La risposta è stata eliminare del tutto il file web.config. Appartiene solo alla radice di un'applicazione.


1

Se si riscontra questo problema durante la pubblicazione del sito Web o dell'applicazione su alcuni server, la soluzione semplice che ho usato è quella di convertire una cartella che contiene file in un'applicazione Web.


4
Ciao, benvenuto in Stack Overflow! Puoi per favore espandere la tua risposta? Potresti spiegare come convertire la cartella in un'applicazione Web? Questo aiuterà gli altri a capire meglio la tua risposta.
Jesse

1
In Gestione IIS, nel riquadro Connessioni sulla destra, fai clic con il pulsante destro del mouse sulla directory sotto i siti che hai creato (o Sito Web predefinito) e scegli Convert to Application.
Aske B.

1

Ho lo stesso problema in VS 2013 dopo aver pubblicato il mio progetto in modalità debug. Il problema è stato risolto rimuovendo obj / files


1

Ho un progetto per un sito web.

Nel mio caso avevo spostato il file della soluzione in un altro percorso e ciò causava il problema. L'ho ripristinato nella posizione precedente e il problema si è risolto.


1

Per chiunque sia ancora alla ricerca, la mia soluzione era eliminare entrambe le cartelle bin e obj e riavviare Visual Studio sembra risolverlo.


1

Tramite Visual Studio, avevo pubblicato un servizio WCF via FTP , su un server esterno. Funzionava bene localmente e durante la pubblicazione su un server interno, ma non all'esterno. La soluzione era pubblicare senza fornire a Site Path (in altre parole, pubblicare direttamente nella directory principale della directory virtuale).

Non sono sicuro del motivo per cui ha funzionato, dal momento che avevo già provato a spostare i file nella directory principale tramite un client FTP esterno, tra molti altri tentativi, inclusi tutti elencati qui. Forse era qualcosa con il profilo di pubblicazione, come per FabianVal . Ma non sono più in vena di test a questo punto, dato che ho fretta di mettermi al passo dopo tutti i giorni sprecati per questo problema.


0

consiglio 1: pulisci e poi ricostruisci.

suggerimento 2: basta chiudere VS e riaprirlo.

suggerimento 3: il progetto scaricato potrebbe trovarsi all'interno di un'altra sottocartella ... aprire la cartella che contiene i file .net.

c: / demo1 / demo / (tutti i file)

Dovresti aprire la demo da vs ... non demo1.


0

Ho provato tutte le soluzioni sopra, ma nessuna ha funzionato per il mio problema. (Sono sicuro che ci sono 1000 soluzioni a questo problema) Per il mio scenario, stavo tentando di pubblicare il mio servizio web WCF che avevo testato in produzione.

Tuttavia, non sono riuscito a rendermi conto che in produzione siamo solo HTTPS, il che significa che reindirizziamo tutto a HTTPS. A quanto pare, stavo indicando il servizio tramite HTTP anziché HTTPS, causando così l'errore. La soluzione in questo scenario era semplicemente cambiare il protocollo di indirizzo in HTTPS anziché in HTTP.

Spero che ciò aiuti qualche povera anima là fuori a cercare di capire questo problema.

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.