Ich versuche, DI auf ActionFilters in ASP.NET WebAPI mit Ninject einzurichten. Ich folgte den Anweisungen hier: https://github.com/ninject/Ninject.Web.WebApi/wiki/Dependency-injection-for-filtersDependency Injection für ASP.NET WebAPI ActionFilters mit Ninject funktioniert nicht
Ich eröffne mein Action wie so:
public class ApiAuthorizeFilter : AbstractActionFilter
{
private readonly IValidateApiTokenService _validateApiTokenService;
public ApiAuthorizeFilter(IValidateApiTokenService validateApiTokenService)
{
_validateApiTokenService = validateApiTokenService;
}
public override bool AllowMultiple => true;
public override void OnActionExecuting(HttpActionContext actionContext)
{
}
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
}
}
ich wie so konfiguriert:
kernel.BindHttpFilter<ApiAuthorizeFilter>(FilterScope.Controller);
Mein Verständnis über die Informationen auf den obigen Link basiert ist, dass die ActionFilter sollte dann für alle Aktionen in allen WebAPI-Controllern ausgeführt werden. Ich habe jedoch Haltepunkte bei beiden überschriebenen Methoden im Filter gesetzt und es wird nie getroffen. Ich habe bei der Konfiguration einen Haltepunkt gesetzt und kann bestätigen, dass er ausgeführt wird.
Was fehlt mir? Ich brauche diesen ActionFilter, um auf allen Aktionen in jedem ApiController in meinem Projekt zu laufen.
Wie werden Sie Injektion des Konstrukts zu konfigurieren oder Parameter für ApiAuthorizeFilter? – DavidS
@DavidS das versuche ich zu lösen. Ich möchte, dass IValidateApiTokenService in meinen Filter eingefügt wird. –
Ohne zu wissen, wie der IValidateApiTokenService instanziiert werden muss, kann ich keine spezifische Empfehlung geben, aber es gibt ein paar Beispiele dafür, wie man es im Beispielcode tut (wenn Sie noch nicht nachsehen): https: //github.com/ninject/Ninject.Web.WebApi/blob/master/src/SampleApplication/Controllers/FilterInjectionExample/FilterInjectionModule.cs – DavidS