it-swarm.com.de

ASP.NET: Diese Methode kann während der Initialisierungsphase der Anwendung nicht aufgerufen werden

Ich versuche, eine ASP.NET MVC 3-Site unter IIS 6.0 auszuführen. 

Wenn ich derzeit eine Seite vom Server anfordert, wird der folgende Fehler angezeigt:

Parser-Fehlermeldung: Diese Methode kann während der Initialisierungsphase der Anwendung nicht aufgerufen werden.

in dieser Zeile:

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

Ich bin völlig ratlos und habe keine Ahnung vom ASP.NET-Anwendungslebenszyklus, ganz zu schweigen von den Unterschieden zwischen 6.0 und 7.0. Das Lesen der MSDN-Seiten schien nicht viel zu helfen. 

Hat jemand einen Einblick oder gute Links für die Untersuchung? :)

134
sqwerty

Fügen Sie dies in Ihrer web.config (im Abschnitt appSettings) hinzu:

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

BEARBEITEN:

Für diejenigen, die nach dem Grund fragen, handelt es sich um ein bekanntes Problem, das in den mvc 3 release notes .__ beschrieben ist. Weitere Details hier

251
Gregoire

Nach dem Upgrade einiger meiner Anwendungen von ASP.NET MVC3 auf MVC4 wurde diese Fehlermeldung angezeigt. Es war ein Ergebnis der WebMatrix-Assemblys (WebMatrix.WebData.dll und WebMatrix.Data.dll). Ich habe diese Verweise und Assemblys aus dem Verzeichnis/bin entfernt, und das Problem wurde behoben.

39

@ Ek0nomik hat recht. Wir haben von der MembershipProvider zur neuen ExtendedMembershipProvider gewechselt, wodurch wir einige der neuen Funktionen nutzen können, die im WebMatrix Namespace angeboten werden. Standardmäßig ist die einfache Mitgliedschaft aus irgendeinem Grund aktiviert. Daher mussten wir sie explizit deaktivieren, da wir die SimpleMembershipProvider nicht verwenden wollten.

Alles, was wir tun mussten, war, dies der web.config hinzuzufügen:

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

Durch die Aktivierung der einfachen Mitgliedschaft wurde der Provider-Initialisierungscode vor dem Application_Start-Handler ausgeführt. Unsere App-Struktur erfordert, dass App_Start als erstes ausgeführt wird. Persönlich würde ich das immer erwarten, aber Simple Membership ändert dieses Verhalten. In acht nehmen.

7
Andy McCluggage

Nun, ich habe gerade diesen Fehler erhalten und er ist darauf zurückzuführen, dass ich versehentlich eine .cshtml-Datei in die Wurzel meines Projekts kopiert habe. Es war nicht einmal im Projekt enthalten. Gelöscht das und der Fehler ging weg. Dies war mit MVC3 auf IIS7 der Fall. Ich kann mir vorstellen, dass einige Leute, die dieses Problem haben, im selben Boot sind.

6
David Hammond

Dies wird dadurch verursacht, dass einige Reflection-Aufrufe zu früh in einer Anwendung ausgeführt werden. Es ist nur so, dass die Vorschläge von Web.Config in anderen Antworten einen solchen Reflection-Aufruf verhindern. In meinem Fall jedoch:

Ich verwende Entity Framework und habe update-database ausgeführt. Ich habe:

Diese Methode kann nicht während der Initialisierungsphase der Anwendung vor dem Start aufgerufen werden.

Wie sich herausstellte, hatten wir Code, der eine Bibliothek verwendete, die kürzlich geändert wurde, um sämtlichen Code in allen Namespaces/Projekten abzurufen. Konkret heißt es:

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

Kaboom Das hat diesen dunklen Fehler verursacht. EF-Migrationen werden in einer seltsamen Zone ausgeführt, in der die Anwendung zur Hälfte ausgeführt wird und zur Hälfte nicht, was bedeutet, dass die obige Methode niemals von Code aufgerufen werden kann, den Migrationen erfordern würden.

0
Chris Moschini