Registrierung von generic Interfaces in der ASPNET Core Dependency Injection

Bei ASP.NET Core ist Dependency Injection ein Feature das fester Bestandteil des Konzeptes ist. Wenn man sein Interface und die dazu gehörige Implementierung registrieren möchte, gibt es dafür eine einfache Möglichkeit.

services.AddScoped<Interface,Implementation>();

Möchte man nun ein generic Interface registrieren liegt das Folgende zunächst nahe:  

services.AddScoped<IGenericRepository<T>,Repository<T>>();

dieser Ansatz funktioniert aber nicht.

Für die Registrierung von generic Interfaces muss man folgenden Ansatz wählen:

services.AddScoped(typeof(IGenericRepository<>), typeof(GenericRepository<>));

Running ASP.NET Core Web Application im IIS

ASP.NET Core Applicationen benötigen nicht mehr zwingend einen IIS - Internet Information Server - für den Betrieb / Hosting. Auf die vielfältigen Hosting-Möglichkeiten möchte ich hier und jetzt nicht weiter eingehen und mich zunächst auf den IIS fokusieren.

In vielen vorhanden .NET Umgebungen wird einen IIS betrieben und soll vielleicht auch weiter betreiben werden. Wenn man nun eine ASP.NET Core Web Application im hosten möchte, muss man folgende Punkte durchführen:

Installation

Installation der  .NET Core Windows Server Hosting bundle. Dabei wird die NET Core Runtime, .NET Core Library, und das ASP.NET Core Module installiert. Letztes arbeitet als reverse-proxy zwischen dem IIS und Kestrel.

Nach der Installation muss der Server neu gestartet werden oder die Befehle net stop was /y und anschließend net start w3svc ausgeführt werden.

Konfiguration

Nun kann man wie gewohnt im IIS eine Webseite hinzufügen und einen neuen Application-Pool anlegen. Bei Application Pool wählt man als  .NET CLR version dann No Managed Code aus, da es für ASP.NET Core nicht notwendig ist die CLR zu laden.