Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 将依赖项注入MVC3过滤器_Asp.net Mvc 3_Ninject - Fatal编程技术网

Asp.net mvc 3 将依赖项注入MVC3过滤器

Asp.net mvc 3 将依赖项注入MVC3过滤器,asp.net-mvc-3,ninject,Asp.net Mvc 3,Ninject,我花了很长时间试图将依赖项注入到自定义授权过滤器中 OutletService(这是我正试图注入过滤器的服务) 公共类OutletService:IOutletService { #区域字段 私有只读IRepository outletRepository; #端区 #区域导体 公共OutletService(IRepository outletRepository) { _outletRepository=outletRepository; } #端区 //班上其他同学被省略了 Custom

我花了很长时间试图将依赖项注入到自定义授权过滤器中

OutletService(这是我正试图注入过滤器的服务)

公共类OutletService:IOutletService
{
#区域字段
私有只读IRepository outletRepository;
#端区
#区域导体
公共OutletService(IRepository outletRepository)
{
_outletRepository=outletRepository;
}
#端区
//班上其他同学被省略了
CustomAuthorizationAttribute(部分,本例名称也已更改)

公共类MyAuthorizeAttribute:AuthorizeAttribute
{
私人IOutletService\u outletService;
专用IModuleService(模块服务);
公共字符串操作{get;set;}
公共整数级别{get;set;}
public MarcusAuthorizeAttribute()
{
}
[注入]
公共MyAuthorizeAttribute(IOutletService-outletService、IModuleService-moduleService)
{
_outletService=outletService;
_模块服务=模块服务;
}
我试着以这篇文章为例,但一旦我把它连接起来,我的所有路线似乎都不起作用(IIS Express返回401/找不到?

如果有任何人有任何想法或建议,我将不胜感激!(这简直让我发疯了!)


谢谢!

Ninject的MVC扩展有一种将依赖项注入过滤器的机制,也就是说。

Ninject的MVC扩展有一种将依赖项注入过滤器的机制,也就是说。

您可以试试这个

滤器
公共类MyAuthorizeAttribute:AuthorizeAttribute
{
私人IOutletService\u outletService;
专用IModuleService(模块服务);
公共字符串操作{get;set;}
公共整数级别{get;set;}
public MarcusAuthorizeAttribute()
{
_outletService=DependencyResolver.Current.GetService();
_moduleService=DependencyResolver.Current.GetService();
}
}
请确保向正在使用的依赖项解析程序注册服务。

您可以尝试此方法

滤器
公共类MyAuthorizeAttribute:AuthorizeAttribute
{
私人IOutletService\u outletService;
专用IModuleService(模块服务);
公共字符串操作{get;set;}
公共整数级别{get;set;}
public MarcusAuthorizeAttribute()
{
_outletService=DependencyResolver.Current.GetService();
_moduleService=DependencyResolver.Current.GetService();
}
}

请确保向正在使用的依赖项解析程序注册服务。

试试Ninject.MVC3的BindFilter方法。[下面是一个示例][1][1]:@Brook当我尝试这样做时,它会终止应用程序并给出401?以供您理解。属性总是由.NET framework使用无参数构造函数创建的。添加无参数的构造函数是绝对没有意义的。可能重复此主题的许多其他帖子:例如,尝试Ninject.MVC3的BindFilter方法。[这里有一个例子][1][1]:@Brook当我尝试这样做时,它会终止应用程序并给出401?以供您理解。属性总是由.NET framework使用无参数构造函数创建的。添加无参数构造函数是绝对没有意义的。可能重复此主题的许多其他帖子:例如,-1当有方法进行适当的依赖项注入。-1当有办法进行适当的依赖项注入时,不要进行服务定位。
public class MyAuthorizeAttribute : AuthorizeAttribute
{
    private IOutletService _outletService;
    private IModuleService _moduleService;

    public string Action { get; set; }
    public int Level { get; set; }

    public MarcusAuthorizeAttribute()
    {
       _outletService = DependencyResolver.Current.GetService<IHelloService>();
       _moduleService  = DependencyResolver.Current.GetService<IModuleService>();
    }
}