具有Ninject依赖注入的Web API自定义属性过滤器

时间:2016-05-06 18:16:56

标签: c# asp.net-web-api

我有一个名为HomeController

的控制器
public class HomeController : ApiController
{       
    [System.Web.Http.HttpGet]
    public string Index()
    {
       //Some logic
    }
}

名为Logging

的属性类
public class Logging : ActionFilterAttribute
{
    private readonly IMyInterface myInterface;
    public LogResponse(myInterface value)
    {
        //Add Validation
        myInterface = value;
    }

    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        // some logic
    }
}

我想使用绑定但我不知道如何在这里使用Ninject。

在我的Ninject文件中,我尝试过:

private static void RegisterServices(IKernel kernel)
{
    kernel.BindHttpFilter<LogResponse>(FilterScope.Controller)
        .WithConstructorArgument("Report", ???) // ?? says some object , but what value ?
}

你能否帮我解决Ninject功能

2 个答案:

答案 0 :(得分:0)

您可能需要创建一个额外的Caused by: javax.net.ssl.SSLHandshakeException: no cipher suites in common ,并在绑定中使用它。

有关更详细的示例,请参阅https://stackoverflow.com/a/6194159/146205

答案 1 :(得分:0)

1)构造函数名称似乎与类名称不同,可能是输入错误 2)不熟悉NInject,但我假设您有IMyInterface的类型注册;在这种情况下,使用容器获取它的实例并将其传递给WithConstructorArgument方法(假设它按照其名称所做的那样)。小心param名称,它应该是值(并且在那里有另一个错误,在构造函数签名中,它应该是IMyInterface值)。希望它适用。