ASP.NET: no se puede llamar a este método durante la etapa de inicialización previa al inicio de la aplicación

135

Estoy tratando de ejecutar un sitio ASP.NET MVC 3 en IIS 6.0.

Actualmente, cuando solicito una página del servidor, aparece el siguiente error:

Mensaje de error del analizador: no se puede llamar a este método durante la etapa de inicialización previa al inicio de la aplicación.

en esta linea:

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

Estoy completamente perplejo y no tengo mucha idea sobre el ciclo de vida de la aplicación ASP.NET, y mucho menos las diferencias entre 6.0 y 7.0. Leer a través de las páginas de MSDN no parece ayudar mucho.

¿Alguien tiene alguna idea o algún buen enlace para la investigación? :)

sqwerty
fuente
1
Tengo el mismo problema con MVC 2 en el servidor web localhost VS (Cassini).
Morten Christiansen
1
Este mismo problema (y resolución) parece aplicarse también a MVC 3 en IIS 7.0.
CrazyPyro
2
También tenga este problema con MVC4 e IIS6, con un nuevo proyecto. Se solucionó eliminando webmatrix. *, Vea la respuesta a continuación.
Andrew Backer
Tuve el mismo error, pero no en el contexto de un proveedor de membresía, por lo que la respuesta aceptada no fue de ayuda. Resulta que cometí un error estúpido, sin especificar el ensamblaje en la sección de configuración. Cambié el nombre de la sección a "nombre.cualificado.del.tipo, conjunto.nombre" completamente para borrar el error.
FishesCycle

Respuestas:

253

Agregue esto en su web.config (en la sección Configuración de la aplicación):

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

EDITAR:

Para aquellos que preguntan por qué, es un problema conocido descrito en las notas de la versión de mvc 3 Más detalles aquí

Gregoire
fuente
3
¿Puedes por favor ampliar eso un poco? ¿Dónde en la web.config? ¿Qué hacen las llaves? Tengo problemas para encontrar la documentación en línea de esas claves.
Kennet Belenky
2
Veo. Define automáticamente las reglas de seguridad y membresía, por lo que debe anularlas antes de agregar reglas personalizadas. Difícil.
Jonathan Allen
44
Creo un nuevo proyecto, este error no ocurre y no necesito agregar estas claves. En mi proyecto existente, tuve que agregar estas claves para trabajar, ¿por qué?
ridermansb
2
¿Por qué? ¿Alguien puede vincular a alguna explicación / documentación?
Matt Kocaj
1
La primera línea me lo arregló en MVC4: <add key = "enableSimpleMembership" value = "false" />
angularsen
39

Después de actualizar algunas de mis aplicaciones de ASP.NET MVC3 a MVC4 recibí este error. Fue el resultado de los ensamblados de WebMatrix (WebMatrix.WebData.dll y WebMatrix.Data.dll). Eliminé esas referencias y ensamblajes del directorio / bin y eso solucionó el problema.

Justin Helgerson
fuente
2
@rboarman: esto me lo ha solucionado repetidamente. ¿Está seguro de que los ensamblajes aún no se encuentran en el directorio / bin?
Justin Helgerson
Agregar la clave como se describió anteriormente lo arregló. La presencia de WebMatrix.WebData.dll y WebMatrix.Data.dll no marcó la diferencia de ninguna manera.
rboarman
Esto me lo arregló cuando actualicé de MVC4RC a RTM. Comencé haciendo un nuevo proyecto y copiando todos los bits relacionados. No hice cambios en el código, y web.config tampoco tuvo cambios significativos. Extraño.
Andrew Backer
1
Me lo arregló. Estaba en una situación en la que instalé algunas cosas para Azure, construí el proyecto, decidí que no era lo que quería e hice una acción de deshacer a través de TFS, por lo que todo mi código era IDÉNTICO a lo que era cuando funcionaba. Sin embargo, mi carpeta bin era un poco más pesada. El borrado manual de los ensamblados de WebMatrix (en lugar de llamar a Clean en el proyecto) funcionó. Gracias Ek0nomik.
Yetti
Gracias. Esto me lo arregló.
corix010
8

@ Ek0nomik tiene razón. Migramos de lo MembershipProvidernuevo a ExtendedMembershipProviderlo nuevo, lo que nos permite aprovechar algunas de las nuevas funcionalidades que se ofrecen en el espacio de nombres WebMatrix . Por defecto, Simple Membership está habilitado por alguna razón, por lo que tuvimos que deshabilitarlo explícitamente ya que no queríamos ir tan lejos como usar el SimpleMembershipProvider.

Todo lo que teníamos que hacer era agregar esto a la web.config:

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

Al habilitar la membresía simple, el código de inicialización del proveedor se ejecutó antes que el controlador Application_Start. Nuestra estructura de aplicación requiere que App_Start sea lo primero que se ejecute. Personalmente, siempre esperaría esto, pero Simple Membership cambia este comportamiento. Tener cuidado.

Andy McCluggage
fuente
6

Bueno, acabo de recibir este error, y fue el resultado de haber copiado accidentalmente un .cshtml en la raíz de mi proyecto. Ni siquiera se incluyó en el proyecto. Eliminó eso y el error desapareció. Esto fue con MVC3 en IIS7. Me imagino que algunas de las personas que tienen este problema están en el mismo bote.

David Hammond
fuente
2

Esto es causado por cualquiera de varias llamadas de Reflection que se realizan demasiado pronto en una Aplicación. Simplemente sucede en la Web. Las sugerencias de configuración en otras respuestas impidieron que se realizara una llamada de reflexión. En mi caso, sin embargo:

Estoy usando Entity Framework, y corrí update-database. Tengo:

No se puede llamar a este método durante la fase de inicialización previa al inicio de la aplicación.

Como resultado, teníamos un código que usaba una biblioteca que se modificó recientemente para obtener todo el código en todos los espacios de nombres / proyectos. Específicamente, llamó:

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

Kaboom Eso causó este oscuro error. EF Migrations se ejecuta en una zona extraña donde la aplicación se está ejecutando a medias y la otra mitad, lo que significa que el método anterior nunca puede ser invocado por ningún código que Migrations invoque.

Chris Moschini
fuente