Ninject kann kein Objekt im Anforderungsbereich ablegen

Ich kann Ninject nicht dazu bringen, Objekte im Anforderungsbereich in einer ASP.NET MVC-Anwendung mit Web-API zu entsorgen, egal was ich tue.

Was mache ich

Erstellen Sie mit Visual Studio 2013 eine neue ASP.NET-Webanwendung. Ich wähle die MVC-Vorlage aus und füge ihr eine Web-API hinzu (standardmäßig enthält das Paket auch ASP.NET-Identität).Ich installiere das Ninject.MVC5-Paket über Nuget (install-package Ninject.MVC5)

Ich füge meiner Anwendung die folgende Klasse hinzu:

public class SomeDisposable: IDisposable {public void Dispose () {System.Diagnostics.Debug.WriteLine ("test"); }}

Ich füge die folgende Bindung in der NinjectWebCommon RegisterServices-Methode hinzu

kernel.Bind (). ToSelf (). InRequestScope ();

Ich füge dem Home-Controller ein Objekt vom Typ SomeDisposable hinzu

public HomeController (SomeDisposable some) {}

Ich führe die Anwendung aus und platziere einen Haltepunkt im HomeController-Konstruktor und in der Dispose-Methode der SomeDisposable-Klasse. Der Controller empfängt ein Objekt (vermutlich von Ninject), die Seite wird geladen, aberdie Dispose-Methode wird nie @ aufgeruf.

An diesem Punkt sind die Dinge bereits kaputt, aber ich füge einen Web-API-Controller hinzu, installiere Ninject.WebApi im Paket und wiederhole das Experiment mit dem WebAPI-Controller, und ich erhalte das gleiche Ergebnis.

Ich habe eine Reihe von Fragen gelesen, darunter diese -Ninject ruft nicht Dispose für Objekte auf, wenn sie außerhalb des Bereichs liegen. und die Ninject-Dokumentationhttps: //github.com/ninject/Ninject.Web.Common/wiki/InRequestScop und beide geben an, dass aufgrund der Tatsache, dass Ninject.Web.Common eine Registrierung für das OnePerRequestHttpModule enthält (ja, es ist da), die Entsorgung nur funktionieren sollte, aber nicht. Ich habe auch versucht, das PerRequest-Modul in die web.config einzufügen, und habe die Fehlermeldung erhalten, dass ich diesen Abschnitt nicht im integrierten Modus haben kann.

n diesem Punkt bin ich verloren. Ich vermute, dass entweder der integrierte Modus oder OWIN etwas damit zu tun haben, aber ich habe keine Ahnung, wie ich es debuggen oder was ich tun soll, um es zu beheben. Irgendwelche Vorschläge

Antworten auf die Frage(2)

Ihre Antwort auf die Frage