Ich habe die folgende Lösung versucht, die in Wie kann ich Ninject oder DI in asp.net Web Forms implementieren? (Jasons Antwort) gefunden wurde.
- Erstellen Sie ein neues ASP.NET WebForms-Projekt
- Verwenden Sie NuGet, um das Ninject.Web-Lib hinzuzufügen (das auch die Ninject.Web.Common- und Ninject-Libs herunterlädt)
- Registrieren Sie Ihre benutzerdefinierten Bindungen in App_Start / NinjectWebCommon.cs / RegisterServices-Methode
- Verwenden Sie Attributinjektion auf Ihren Seiten
Funktioniert großartig in ASP.NET-Webanwendungen.
Das Problem ist, dass ich Ninject für die DI in einer ASP.NET-Website verwenden möchte, nicht in einer Webanwendung.
Ich habe benutzerdefinierte Bindungen in NinjectWebCommon / RegisterServices registriert:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind().To();
}
In einer Webseite injiziere ich es:
public partial class _Default : System.Web.UI.Page
{
[Inject]
public ITestRepository _repository { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
System.Diagnostics.Trace.WriteLine(_repository.ExecuteOperation());
}
}
Es wirft immer eine Null-Referenz-Ausnahme und der Haltepunkt innerhalb von NinjectWebCommon.cs wird nie erreicht - im Gegensatz zu einer Webanwendung.
Was muss noch getan werden, damit Ninject 3 in einer Website funktioniert?