Asp.net mvc 3 将依赖项注入MVC3过滤器
我花了很长时间试图将依赖项注入到自定义授权过滤器中 OutletService(这是我正试图注入过滤器的服务)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: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>();
}
}