ASP.NET: questo metodo non può essere chiamato durante la fase di inizializzazione pre-avvio dell'applicazione


135

Sto cercando di ottenere un sito ASP.NET MVC 3 in esecuzione su IIS 6.0.

Attualmente, quando richiedo una pagina dal server, viene visualizzato il seguente errore:

Messaggio di errore del parser: questo metodo non può essere chiamato durante la fase di inizializzazione pre-avvio dell'applicazione.

su questa linea:

<add name="MyMembershipProvider" type="NS.MyMembershipProvider" connectionStringName="MyDatabase" applicationName="/MySite"/>

Sono completamente sconcertato e non ho molti indizi sul ciclo di vita dell'applicazione ASP.NET, per non parlare delle differenze tra 6.0 e 7.0. Leggere le pagine MSDN su di esso non sembra essere di grande aiuto.

Qualcuno ha qualche intuizione o qualche buon link per le indagini? :)


1
Ho lo stesso problema con MVC 2 sul server web localhost VS (Cassini).
Morten Christiansen,

1
Lo stesso problema (e risoluzione) sembra essere applicabile anche a MVC 3 su IIS 7.0.
CrazyPyro,

2
Anche questo problema con MVC4 e IIS6, con un nuovo progetto. Risolto rimuovendo webmatrix. *, Vedi sotto risposta.
Andrew Backer,

Ho avuto lo stesso errore, ma non nel contesto di un provider di appartenenza, quindi la risposta accettata non è stata di aiuto. Si è scoperto che avevo fatto uno stupido errore, non specificando l'assemblaggio nella sezione di configurazione. Ho cambiato il nome della sezione in "fully.qualified.name.of.type, assembly.name" per cancellare l'errore.
FishesCycle

Risposte:


253

Aggiungi questo nel tuo web.config (nella sezione AppSettings):

<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>

MODIFICARE:

Per quelli che chiedono perché, è un problema noto descritto nelle note di rilascio di mvc 3 Maggiori dettagli qui


3
Puoi per favore ampliarlo un po '? Dove nel web.config? Cosa fanno le chiavi? Ho problemi a trovare la documentazione online di quelle chiavi.
Kennet Belenky,

2
Vedo. Definisce automaticamente le regole di sicurezza e di appartenenza, quindi è necessario sostituirle prima di aggiungerne di personalizzate. Difficile.
Jonathan Allen,

4
Creo un nuovo progetto, questo errore non si verifica e non è necessario aggiungere queste chiavi. Sul mio progetto esistente, ho dovuto aggiungere queste chiavi per funzionare, perché ??
ridermansb,

2
Perché? Qualcuno può collegarsi a qualche spiegazione / documentazione?
Matt Kocaj,

1
La prima riga l'ha risolto per me in MVC4: <add key = "enableSimpleMembership" value = "false" />
angularsen,

39

Dopo aver aggiornato alcune delle mie applicazioni da ASP.NET MVC3 a MVC4 stavo ottenendo questo errore. Era il risultato degli assiemi WebMatrix (WebMatrix.WebData.dll e WebMatrix.Data.dll). Ho rimosso i riferimenti e gli assembly dalla directory / bin e questo ha risolto il problema.


2
@rboarman - Questo mi ha risolto ripetutamente. Sei sicuro che gli assembly non siano ancora nella directory / bin?
Justin Helgerson,

L'aggiunta della chiave come descritto sopra l'ha risolta. La presenza di WebMatrix.WebData.dll e WebMatrix.Data.dll non ha fatto alcuna differenza in entrambi i casi.
rboarman,

Questo è stato risolto per me quando sono passato da MVC4RC a RTM. Ho iniziato realizzando un nuovo progetto e copiando tutti i bit correlati. Non ho apportato modifiche al codice e web.config non ha avuto cambiamenti significativi. Strano.
Andrew Backer,

1
Risolto il problema per me. Mi trovavo in una situazione in cui avevo installato alcune cose per Azure, creato il progetto, deciso che non era quello che volevo e fatto un annullamento tramite TFS, quindi tutto il mio codice era IDENTICO a quello che era quando funzionava. Tuttavia, la mia cartella bin era un po 'più pesante. L'eliminazione manuale degli assiemi WebMatrix (invece di chiamare Clean sul progetto) ha funzionato. Grazie Ek0nomik.
Yetti il

Grazie. Questo mi ha risolto.
corix010,

8

@ Ek0nomik ha ragione. Siamo passati dal MembershipProvidernuovo al nuovo, ExtendedMembershipProviderconsentendoci di sfruttare alcune delle nuove funzionalità offerte nello spazio dei nomi WebMatrix . Per impostazione predefinita, l'abbonamento semplice è abilitato per qualche motivo, quindi abbiamo dovuto disabilitarlo esplicitamente poiché non volevamo spingerci fino all'utilizzo di SimpleMembershipProvider.

Tutto quello che dovevamo fare era aggiungere questo al web.config:

<add key="enableSimpleMembership" value="false"/>

L'attivazione di Simple Membership ha causato l'esecuzione del codice di inizializzazione del provider prima del gestore Application_Start. La nostra struttura di app richiede che App_Start sia la prima cosa da eseguire. Personalmente mi aspetterei sempre questo, ma l'iscrizione semplice modifica questo comportamento. Attenzione.


6

Bene, ho appena ricevuto questo errore e derivava dall'aver accidentalmente copiato un .cshtml nella radice del mio progetto. Non è stato nemmeno incluso nel progetto. Eliminato e l'errore è andato via. Questo era con MVC3 su IIS7. Immagino che alcune delle persone che hanno questo problema si trovino nella stessa barca.


2

Ciò è causato da una serie di chiamate Reflection effettuate troppo presto in un'applicazione. Accade così che i suggerimenti di Web.Config in altre risposte hanno impedito di effettuare una chiamata Reflection. Nel mio caso tuttavia:

Sto usando Entity Framework e ho funzionato update-database. Ho ottenuto:

Questo metodo non può essere chiamato durante la fase di inizializzazione pre-avvio dell'applicazione.

A quanto pare abbiamo avuto il codice che utilizzava una libreria che è stata recentemente modificata per ottenere tutto il codice in tutti gli spazi dei nomi / progetti. In particolare, ha chiamato:

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

Kaboom. Ciò ha causato questo oscuro errore. Le migrazioni EF vengono eseguite in una zona strana in cui l'applicazione è per metà in esecuzione e per metà no, il che significa che il metodo sopra non può mai essere chiamato da alcun codice su cui le migrazioni farebbero ricorso.

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.