Ninject MVC3-excepción de lanzamiento de bootstrapper "Ya inicializado"


He creado un vacío Asp.Net MVC3 project, y utilizó nuget install-package Ninject.MVC3

Sin hacer nada más (no hay servicios registrados y ni siquiera un controlador creado) corro la aplicación.

El Proyecto se rompe en la línea 22 en NinjectMVC3.cs con la siguiente excepción:

[InvalidOperationException: Ya Inicializado!] Ninject.Web.Mvc.Bootstrapper.Inicializar (Func ' 1 createKernelCallback) en c:\Projects\Ninject\Maintenance2.2\ninject.web.mvc \ mvc3 \ src \ Ninject.Web.Mvc\Bootstrapper.cs>: 58 Mvc.App_Start.NinjectMVC3.Start () in c:\Projects\Events\Events\App_Start\NinjectMVC3.cs: 22

[TargetInvocationException: Exception ha sido lanzado por el objetivo de un invocación.]
Sistema.Ejecutar el método de manejo._InvokeMethodFast (IRuntimeMethodInfo método, Objeto objetivo, Objeto[] argumentos, SignatureStruct & sig, MethodAttributes methodAttributes, RuntimeType typeOwner) + 0
Sistema.Ejecutar el método de manejo.InvokeMethodFast (IRuntimeMethodInfo método, Objeto objetivo, Objeto[] argumentos, Firma sig, MethodAttributes methodAttributes, RuntimeType typeOwner) + 72
Sistema.Reflexión.RuntimeMethodInfo.Invoke(Objeto obj, BindingFlags invokeAttr, Binder binder, Object [] parámetros, CultureInfo cultura, booleana skipVisibilityChecks) + 335
Sistema.Reflexión.RuntimeMethodInfo.Invoke(Objeto obj, BindingFlags invokeAttr, Binder binder, Object [] parámetros, CultureInfo culture) + 28
Sistema.Reflexión.MethodBase.Invoke(Objeto obj, Obj[] parámetros) +19
WebActivator.Método de activación de base.invokeMethod() + 199 WebActivator.ActivationManager.Métodos de activación de la ejecución() + 330 WebActivator.ActivationManager.RunPreStartMethods() + 27 WebActivator.ActivationManager.Ejecutar() +39

La línea en NinjectMVC3.cs es:

public static void Start() 
        {
            DynamicModuleUtility.RegisterModule(typeof(OnePerRequestModule));
            DynamicModuleUtility.RegisterModule(typeof(HttpApplicationInitializationModule));
            bootstrapper.Initialize(CreateKernel); // <- this one right here...
        }

¿Qué está pasando con esto? He usado Ninject para MVC3 en otros proyectos sin problemas. Me doy cuenta de que la segunda línea en el método Start() no está incluida en paquetes más antiguos (semanas) de Ninject.MVC3, así que tal vez algo más se ha roto en una actualización reciente también?

Por favor ayuda!

Editar para responder a Remo

Esto es de mi global.asax.cs

 public class MvcApplication : System.Web.HttpApplication
 {

Lo global.asax es 100% estándar también. No se han hecho ajustes.

EDICIÓN-Problema se ha ido...

I honestamente no tengo idea de lo que causó esto, pero después de algunos reinicios de Visual Studio, y un reinicio completo, el proyecto está funcionando como debería. Tampoco puedo recrear el problema en nuevos proyectos.

Lo siento por perder el tiempo:)

Author: Yngve B-Nilsen, 2011-05-06

15 answers

Echa un vistazo a Configurando una aplicación MVC3

En resumen:

Probablemente tenga una carpeta App_Start en su proyecto con un archivo NinjectMVC3.cs.

Cuando se utiliza el paquete NuGet en combinación con la modificación del Global.asax (para lo cual no hay razón) debe eliminar la carpeta App_Start y eliminar las referencias a WebActivator y Microsoft.Web.Infraestructura

 34
Author: Andrew Flierman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-04 19:33:14

Esta situación se me ocurrió cuando cambié los espacios de nombres de mi proyecto, y luego lo cambié de nuevo.

Incluso cuando limpié la solución e hice un iisreset, regresó con 'ya inicializado'.

El problema surgió de las DLL que se habían creado en el directorio bin cuando cambié el espacio de nombres y construí el proyecto: después de cambiar los espacios de nombres y limpiar la solución, las DLL del espacio de nombres alternativo todavía estaban allí, y por lo tanto estaban siendo cargado cuando la aplicación web se inició, causando el error 'ya inicializado'.

Al eliminar las DLL se solucionó el problema.

 15
Author: Baldy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-16 17:17:01

Lo más probable es que esté derivando de NinjectHttpApplication y usando AppStart al mismo tiempo. Estas dos formas no deben confundirse.

Lea la documentación https://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application

 12
Author: Remo Gloor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-09 21:24:24

Recientemente me encontré con el mismo problema. En mi caso, tengo múltiples proyectos en mi solución... y más que uno de esos proyectos contiene referencias de paquetes NuGet a Ninject.MVC3.

Cuando actualizé todas las versiones de mi paquete Ninject, se crearon carpetas App_Start en todos los proyectos que tienen referencias NuGet. Por lo tanto, tuve que ir y eliminar las carpetas App_Start de los proyectos de la biblioteca de clases; simplemente dejando la carpeta App_Start en la aplicación MVC principal.

 4
Author: Trevor Germain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-03 14:11:18

No estoy seguro de qué era lo que estaba causando su aplicación a la bomba, pero me alegro de hacer VS reinicios resuelto. Tuve el mismo error, pero no pude corregirlo sin importar cuántas limpiezas/reconstrucciones hice o cuántas veces reinicié VS.

Lo que terminó funcionando para mí fue eliminar el paquete Ninject MVC NuGet completamente y simplemente agregar el Ninject y Ninject dll a la antigua usanza. Creo que puede haber algo mal con su paquete NuGet.

Espero esto ayuda a alguien más, perdí unas horas en él cuando todo lo que necesitaba era volcar el paquete NuGet.

 3
Author: Marcus King,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-18 15:59:37

El problema se ha ido...

Honestamente no tengo idea de lo que causó esto, pero después de algunos reinicios de Visual Studio, y un reinicio completo, el proyecto está funcionando como debería. Tampoco puedo recrear el problema en nuevos proyectos.

Lo siento por perder el tiempo:)

UPDATE

Desde que publicamos esta respuesta han aparecido algunas buenas respuestas. Estoy actualizando esta respuesta para recopilar los diferentes enfoques en una sola respuesta. Espero que esté bien para ustedes:

DevilDog74 respondió

Finalmente fui a gitub y cloné un nuevo repositorio, descargado el último Ninject.Web.Común y último Ninject2 versiones compiladas e hizo una versión local construir. luego abandoné los paquetes nuget e hice referencias de ensamblado a los recién compilados > ensamblados "Ninject", " Ninject.Web.Común" y "Ninject.Web.Mvc " y mi proyecto comenzó > trabajando y se estaban creando controladores con sus dependencias siendo resueltas.

Jeff Circeo respondió

Resolví el problema descargando de https://github.com/ninject/ninject.web.mvc en lugar de usar el paquete nuget. Me no tenía que hacer nada después de que se han añadido las referencias.

Marcus King respondió

Lo que terminó funcionando para mí fue eliminar el paquete Ninject MVC NuGet completamente y simplemente añadir el Ninject y Ninject dll es la vieja moda manera. Creo que puede haber algo mal con su paquete NuGet.

 3
Author: Yngve B-Nilsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:01:03

¡Lee los documentos!

Https://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application

¿Cuál es la diferencia entre estos enfoques?

Ambos enfoques hacen exactamente lo mismo. Enganchan Ninject en aplicaciones MVC. La única diferencia es que utilizan un enfoque diferente para hacer esto. La razón para usar diferentes enfoques es que el paquete NuGet puede proporcionar integración lista para usar agregando un archivo. De lo contrario se requeriría modificaciones complicadas de lo global.asax

NOTA: Si decide ir con el primer enfoque si utiliza el paquete NuGet (para lo cual no hay razón), debe eliminar la carpeta App_Start y eliminar las referencias a WebActivator y Microsoft.Web.Infraestructura.

 2
Author: nologo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-21 10:44:57

Tuve el mismo problema cuando actualizé el Ninject.Web.Paquete MVC3 a la versión 2.2.2.0. Me di cuenta de que esta actualización añadió la siguiente línea a mi .archivo csproj (VCS FTW!):

<Compile Include="App_Start\NinjectMVC3.cs" />

Cambiar la acción de Compilación de Compilar a Contenido para ese archivo resolvió mi problema. App_Start es tan malvado como App_Code después de todo...

 2
Author: lalibi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-01 09:19:26

Resolví este problema eliminando manualmente algunas DLL en la carpeta /bin, que no se eliminaban al ejecutar el comando Cleanup de Visual studio.

 2
Author: Mark K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-06 09:04:11

Tuve el mismo problema con algunas ligeras diferencias que estaba heredando de NinjectHttpApplication y anulando OnApplicationStarted. Resolví el problema descargando desde https://github.com/ninject/ninject.web.mvc en lugar de usar el paquete nuget.

No tuve que hacer nada después de añadir las referencias.

 1
Author: Jeff Circeo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-16 23:10:50

Pasé alrededor de 4 horas jugando con los paquetes de nuget, sin éxito.

Finalmente fui a gitub y cloné un nuevo repositorio, descargé el último Ninject.Web.Versiones comunes y más recientes de Ninject2 e hicimos una versión local.

Luego abandoné los paquetes nuget e hice referencias a los ensamblados recién compilados "Ninject", "Ninject.Web.Común" y "Ninject.Web.Mvc " y mi proyecto comenzó a funcionar y se estaban creando controladores con sus dependencias se está resolviendo.

Así es como se ve mi código, pero creo que también puede haber un problema en los paquetes nuget...

public class MvcApplication : NinjectHttpApplication
{
    protected override void OnApplicationStarted()
    {
        base.OnApplicationStarted();

        AreaRegistration.RegisterAllAreas();
        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }

    protected override Ninject.IKernel CreateKernel()
    {
        // declaratively add the Ninject Modules that we have built to manage our dependencies...
        var modules = new INinjectModule[]{
            new RepoModule()
        };

        return new StandardKernel(modules);
    }

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }
}
 1
Author: CedricB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-19 04:20:36

Asegúrese de que solo un ensamblado tenga la clase "NinjectMVC3", si a.dll,b.dll todos tienen la clase NinjectMVC3 en el directorio bin entonces ,Habrá tal error!

 1
Author: yDy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-26 06:49:21

Acabo de tener este mismo problema y me di cuenta de que era porque NuGet añadió NinjectMVC3.archivos cs a mi aplicación web y a mi biblioteca DAL. No me di cuenta de que había ocurrido, pero una vez que eliminé el archivo de la biblioteca DAL que estaba bien.

 1
Author: Jake Petroules,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-03 01:15:03

Cuando usas NuGet hay una carpeta App_start que se está creando, échale un vistazo.

 0
Author: Rui Lima,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-10 18:15:53

Añadiré esto como una respuesta solo porque no he visto a nadie mencionarlo todavía y vale la pena comprobarlo antes de salir y clonar repositorios y demás.

Experimenté este problema de la nada en una solución que contiene tal vez 15 proyectos, tres de los cuales son sitios web. Había estado trabajando en uno de los sitios cuando empecé a tener este problema sin haber cambiado nada que obviamente causaría el problema: no solo había agregado Ninject en cualquier lugar (ya estaba instalado y funcionando bien), los archivos asax globales no se derivaban de las clases Ninject y nada estaba mal en ninguna carpeta App_Start.

Después de un poco de jugar con NuGet y similares en vano (provocado por mensajes sobre referencias sin resolver-parecía que Ninject no estaba siendo referenciado correctamente, pero lo fue), revisé todos los archivos que había cambiado prestando especial atención a los archivos de proyecto y configuración, y descubrí que de alguna manera Visual Studio había se agregó uno de los otros sitios web como referencia del proyecto al que estaba tratando de ejecutar. Como resultado, la configuración de Ninject se ejecutaba dos veces y causaba el problema, por lo que la causa raíz era la misma, pero el método de error era diferente.

No había ninguna razón para esa referencia de proyecto, no estaba allí antes ya que no era una dependencia válida, no la agregué manualmente y todavía no tengo idea de cómo sucedió, pero eliminarla inmediatamente solucionó el problema.

 0
Author: Steve Pettifer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-06 09:17:48