ASP.NET Web APIでカスタム属性/フィルターをninject、コンストラクターインジェクションで機能させるのに苦労しています。
ここにいくつかのコンテキストを与えるためのいくつかのスニペットがあります...
//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側で間違っていることですが、午後を過ごした後、私と同じように見える他の例を読んだ後、私は助けを求めていることを知っています:)
TIA