Ich entwickle ein MVC5-Projekt auf Visual Studio 2017 Version 15.4. Ich bekomme hier ein unerwartetes Ergebnis, was ich vorher noch nie erlebt habe. Ich habe Ninject.MVC5
Paket von nuget
installiert. Es wird schön installiert und gibt keine Fehler oder Warnungen. Aber Problem ist, dass es keine NinjectWebCommon.cs
Datei in App_Start
Ordner erzeugt. Gibt es einen Grund?Ninject.MVC5 erzeugt kein NinjectWebCommon.Cs
Antwort
Nach viel suchen und Tests habe ich die exakte Lösung bekommt , wo ich Fehler sah, während das System versuchte, mehrere Instanzen gleichzeitig mit der vorherigen Antwort zu erstellen. Hier musste ich NinjectWebCommon
Klasse nur ohne Erben erstellen.
public static class NinjectWebCommon
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
/// <summary>
/// Starts the application
/// </summary>
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
/// <summary>
/// Stops the application.
/// </summary>
public static void Stop()
{
bootstrapper.ShutDown();
}
/// <summary>
/// Creates the kernel that will manage your application.
/// </summary>
/// <returns>The created kernel.</returns>
/// <summary>
/// Creates the kernel that will manage your application.
/// </summary>
/// <returns>The created kernel.</returns>
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
RegisterServices(kernel);
return kernel;
}
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Load(new INinjectModule[]
{
new Module()
});
}
}
Aber hier ist ein Problem mit parametrisierten Konstruktor. Um dieses Problem zu vermeiden, habe ich eine Methode hinzugefügt, um Concrete Instance zu erstellen. So, hier ist der aktualisierte Code ..
public static class NinjectWebCommon
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
/// <summary>
/// Starts the application
/// </summary>
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
/// <summary>
/// Stops the application.
/// </summary>
public static void Stop()
{
bootstrapper.ShutDown();
}
/// <summary>
/// Creates the kernel that will manage your application.
/// </summary>
/// <returns>The created kernel.</returns>
/// <summary>
/// Creates the kernel that will manage your application.
/// </summary>
/// <returns>The created kernel.</returns>
private static IKernel CreateKernel()
{
return Container;
}
public static T GetConcreteInstance<T>()
{
object instance = Container.TryGet<T>();
if (instance != null)
return (T)instance;
throw new InvalidOperationException(string.Format("Unable to create an instance of {0}", typeof(T).FullName));
}
public static IKernel _container;
private static IKernel Container
{
get
{
if (_container == null)
{
_container = new StandardKernel();
_container.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel);
_container.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(_container);
}
return _container;
}
}
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Load(new INinjectModule[]
{
new Module()
});
}
}
Es sieht so aus, als ob das neueste Ninject.Web.Common.WebHost 3.3.0 NuGet-Paket nicht mehr die NinjectWebCommon.cs enthält. Ältere Versionen wie 3.2.0 enthalten diese Datei.
Ninject.Web.Common.WebHost 3.3.0 bietet eine NinjectHttpApplication-Klasse, die Sie anstelle von NinjectWebCommon.cs verwenden können. Die Wiki-Dokumentation für Ninject nicht aktualisiert worden scheint, aber es sieht aus wie mit der NinjectHttpApplication einem dokumentiert Ansatz
mat Kommentar sehen - Web API2 NinjectWebCommon.cs do not appear
Version 3.3.0 ist auch nicht parametrisiert Controller Konstruktor Abhängigkeit zu lösen. –
- 1. Ninject.MVC5 Freigabebereich nie aufgerufen - OutOfMemoryException
- 2. Webpack erzeugt kein bundle.js
- 3. autoconf erzeugt kein Makefile?
- 4. Swagger erzeugt kein api Modellwert
- 5. MAVEN Build erzeugt kein Glas
- 6. Ionic Splash erzeugt kein Vollbild
- 7. JSoup erzeugt kein gültiges XHTML
- 8. facet_wrap (scales = "free_y") erzeugt kein gewünschtes Ergebnis
- 9. angular-cli "ng build" erzeugt kein Arbeitsprojekt?
- 10. Import erzeugt kein System.register als erwartet
- 11. sass-loader mit Webpack erzeugt kein CSS
- 12. tf.where() erzeugt kein Ergebnis wie np.where()
- 13. Shiny-Eingabe für Plotly erzeugt kein Plot
- 14. Schluck Polymer-Build erzeugt kein erwartetes Bündel?
- 15. Formularübergabe erzeugt kein neues Post-Objekt
- 16. Rails 3.1 - Simple_captcha erzeugt kein Bild
- 17. Schienen 5.1.1 erzeugt kein Gerüst/Controller usw.
- 18. svcutil.exe erzeugt kein DateTimeOffset für xs: datetime
- 19. webpack sass-loader erzeugt kein css
- 20. Wo ist mein NinjectWebCommon.cs in Visual Studio 2015
- 21. NinjectWebCommon.cs erhält nicht die neueste Version von VS2015 TFS
- 22. Asynchrone Funktion erzeugt kein sofortiges Ergebnis innerhalb der Schleife
- 23. Spring MVC 4 erzeugt standardmäßig kein JSON-Root-Objekt
- 24. H2 DB im Frühling Boot Hibernate erzeugt kein Db Schema
- 25. Mongoid und simple_form, boolescher Typ erzeugt kein Kontrollkästchen
- 26. Running C-Programm in Cygwin erzeugt kein Ergebnis
- 27. DJANGO REST API --- Javascript Funktion erzeugt kein Recht PK
- 28. Dies erzeugt kein Fenster und ich weiß nicht warum
- 29. SAS PROC IMPORT erzeugt kein OUT-Dataset als Befehl
- 30. Assembly Max. Und Min. Prozedur erzeugt kein erwartetes Ergebnis
diese https://stackoverflow.com/a/47002329/1236044 helfen sollte – jbl