Я изо всех сил пытаюсь получить собственный атрибут / фильтр, работающий с инжектором ninject, с помощью конструктора в ASP.NET Web API.
Вот несколько фрагментов, чтобы дать некоторый контекст ...
//controller
[ApiAuthorise]
public IEnumerable<Thing> Get()
// Attribute definition with no body
public class ApiAuthoriseAttribute : FilterAttribute {}
// Custom Filter definition
public class ApiAuthoriseFilter : IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{ throw new NotImplementedException(); }
}
//Ninject module for my API authorisation
public class ApiAuthoriseModule : NinjectModule
{
public override void Load()
{
this.BindFilter<ApiAuthoriseFilter>(FilterScope.Action, 0)
.WhenActionMethodHas<ApiAuthoriseAttribute>()
}}
//The registerServices(IKernel kernel) method in NinjectMVC3.cs
kernel.Load(new ApiAuthoriseModule());
Это буквально весь мой код, касающийся этого фильтра и атрибута.
Из того, что я понимаю, мне не нужно явно добавлять фильтр в глобальную коллекцию фильтров, поскольку ninject позаботится об этом, это правильно?
Если я помещаю конструктор в свой атрибут и выкидываю из него исключение, я вижу, что атрибут срабатывает.
Я подозреваю, что я что-то не так делаю в Ninject, но, потратив день на чтение других примеров, которые кажутся идентичными моим, я знаю, что прошу помощи:)
1012 * ТИА *