【问题标题】:Injecting dependencies into MVC3 filters将依赖项注入 MVC3 过滤器
【发布时间】:2011-12-24 18:14:54
【问题描述】:

我一直在尝试将依赖项注入自定义授权过滤器中。

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

public class OutletService : IOutletService
{
    #region Fields

    private readonly IRepository<Outlet> _outletRepository;

    #endregion

    #region Ctor

    public OutletService(IRepository<Outlet> outletRepository)
    {
        _outletRepository = outletRepository;
    }

    #endregion

    // Rest of class omitted 

CustomAuthorizeAttribute(部分,此示例的名称也已更改)

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    private IOutletService _outletService;
    private IModuleService _moduleService;

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

    public MarcusAuthorizeAttribute()
    {

    }
    [Inject]
    public MyAuthorizeAttribute(IOutletService outletService, IModuleService moduleService)
    {
        _outletService = outletService;
        _moduleService = moduleService;
    }

我尝试使用这篇文章作为示例,但是一旦我连接它,我的路由似乎都不起作用(IIS Express 返回 401/找不到?)
Injecting dependencies into ASP.NET MVC 3 action filters. What's wrong with this approach?

如果有人有任何想法或建议,我将不胜感激! (它现在真的把我逼到了墙角!)

谢谢!

【问题讨论】:

标签: asp.net-mvc-3 ninject


【解决方案1】:

Ninject 的 MVC 扩展有一种将依赖项注入过滤器的机制,即described in the documentation here。

【讨论】:

    【解决方案2】:

    你可以试试这个

    过滤器

    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>();
        }
    }
    

    确保您使用您正在使用的依赖解析器注册您的服务。

    【讨论】:

    • -1 当有办法进行适当的依赖注入时,不要进行服务定位。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多