web-dev-qa-db-fra.com

ASP.NET: cette méthode ne peut pas être appelée pendant la phase d'initialisation préalable au démarrage de l'application

J'essaie de faire fonctionner un site ASP.NET MVC 3 sur IIS 6.0. 

Actuellement, lorsque je demande une page au serveur, l'erreur suivante apparaît:

Message d'erreur de l'analyseur: Cette méthode ne peut pas être appelée pendant la phase d'initialisation de pré-démarrage de l'application.

sur cette ligne:

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

Je suis complètement perplexe et je n'ai aucune idée du cycle de vie d'une application ASP.NET, sans parler des différences entre 6.0 et 7.0. La lecture des pages MSDN n’a pas semblé beaucoup aider. 

Quelqu'un a-t-il un aperçu ou de bons liens pour une enquête? :)

134
sqwerty

Ajoutez ceci dans votre web.config (dans la section appSettings):

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

MODIFIER:

Pour ceux qui demandent pourquoi, c’est un problème connu et décrit dans mvc 3 notes de publication Plus de détails ici

251
Gregoire

Après la mise à niveau de certaines de mes applications d’ASP.NET MVC3 à MVC4, j’obtenais cette erreur. Il s'agissait d'un résultat des assemblys WebMatrix (WebMatrix.WebData.dll et WebMatrix.Data.dll). J'ai supprimé ces références et assemblys du répertoire/bin et cela a résolu le problème.

39
Justin Helgerson

@ Ek0nomik a raison. Nous avons migré de MembershipProvider vers le nouveau ExtendedMembershipProvider , ce qui nous permet de tirer parti de certaines des nouvelles fonctionnalités offertes dans l'espace de noms WebMatrix . Par défaut, l'appartenance simple est activée pour une raison quelconque, nous avons donc dû la désactiver explicitement, car nous ne voulions pas aller aussi loin que d'utiliser SimpleMembershipProvider .

Tout ce que nous devions faire était d’ajouter ceci au fichier web.config:

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

Le fait d’avoir activé l’appartenance simple a provoqué l’exécution du code d’initialisation du fournisseur avant le gestionnaire Application_Start. Notre structure d'application nécessite que App_Start soit la première chose à exécuter. Personnellement, je m'attendrais toujours à cela, mais Simple Membership change ce comportement. Il faut se méfier.

7
Andy McCluggage

Eh bien, je viens tout juste de recevoir cette erreur, qui résulte d’une copie accidentelle d’un fichier .cshtml dans la racine de mon projet. Ce n'était même pas inclus dans le projet. Supprimé cela et l'erreur est partie. C'était avec MVC3 sur IIS7. J'imagine que certaines des personnes qui rencontrent ce problème sont dans le même bateau.

6
David Hammond

Cela est dû à un certain nombre d'appels de réflexion passés trop tôt dans une application. Il se trouve que les suggestions Web.Config contenues dans d’autres réponses ont empêché la réalisation d’un tel appel de réflexion. Dans mon cas cependant:

J'utilise Entity Framework et j'ai lancé update-database. J'ai eu:

Cette méthode ne peut pas être appelée pendant la phase d'initialisation préalable au démarrage de l'application.

Il se trouve que nous avions un code utilisant une bibliothèque récemment modifiée pour obtenir tout le code dans tous les espaces de noms/projets. Plus précisément, il a appelé:

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

Kaboom. Cela a causé cette erreur obscure. EF Migrations s’exécute dans une zone bizarre où l’application est à moitié en marche et pas à moitié, ce qui signifie que la méthode ci-dessus ne peut jamais être appelée par aucun code sur lequel Migrations ferait appel.

0
Chris Moschini