【问题标题】:Implement Unity MVC 5 dependency injection in ActionFilter在 ActionFilter 中实现 Unity MVC 5 依赖注入
【发布时间】:2015-10-25 12:34:10
【问题描述】:

我正在尝试通过 Unity (mvc5) 在 actionfilter 中注入此用户服务,但它为空。我该如何实现?

public class TestFilter : ActionFilterAttribute
{
    // this is always null
    [Dependency]
    public IUserService UserService { get; set; }

    // other members
}

【问题讨论】:

  • 您在FilterProviders 上注册了UnityFilterAttributeFilterProvider 吗?
  • 嗨 Sam,我没有,请问我该怎么做?
  • 这里有一个explanation and a suggestion 类似的问题,可能会对您有所帮助。

标签: asp.net-mvc-5 unity-container actionfilterattribute


【解决方案1】:

您必须先将UnityFilterAttributeFilterProvider 注册为FilterProvider

修改App_Start > UnityMvcActivator的Start方法如下:

public static void Start()
{
    var container = UnityConfig.GetConfiguredContainer();

    FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First());
    FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container));

    DependencyResolver.SetResolver(new UnityDependencyResolver(container));

    Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}

如果找不到方法。您可能安装了错误或过时的软件包。考虑在包管理器控制台上安装Install-Package Unity.Mvc

【讨论】:

    猜你喜欢
    • 2016-06-25
    • 2012-01-02
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2013-03-08
    • 2014-08-16
    • 1970-01-01
    • 2020-05-27
    相关资源
    最近更新 更多