依赖注入AuthorizationFilterAttribute

时间:2012-04-05 18:11:36

标签: asp.net asp.net-mvc-3 unity-container

我对Unity& amp; IoC一般&像往常一样,我很快陷入困境......

我已经为ASP.NET Web API Beta创建了一个授权过滤器属性。我现在需要将我的Authorizer注入Attribute中,因为这是一个属性,我不能简单地在构造函数中执行此public TestAuthAttribute(IAuthorizer Authorizer)

所以我决定创建一个用属性注入的[Dependency]属性修饰的公共属性,但是它没有被解析。

以下是代码:

public class TestAuthAttribute : AuthorizationFilterAttribute
{
    [Dependency]
    public IAuthorizer Authorizer { get; set; }

    public TestAuthAttribute() {
        ...
        }

    private bool authorizeCore(HttpRequestMessage request)
    {
        if (Authorizer == null)
            throw Error.ArgumentNull("Null Authorizer");  // <<<<< this is null
    }

当控制器使用[TestAuth]进行修饰时,属性被触发但是Authorizer未解析,则为null)

我已将以下代码放入我的控制器&amp;授权人确实得到了解决......

[Dependency]
    public IAuthorizer Authorizer { get; set; }

为什么我的AuthorizationFilterAttribute&amp;您将如何将Authorizer注入AuthorizationFilterAttribute?

2 个答案:

答案 0 :(得分:0)

完全披露:我没有使用过Turbine。

话虽如此,我认为它可能会为您解决问题或者至少告诉您如何解决它。

他们在这里有一个Unity Nuget包:http://nuget.org/packages/MvcTurbine.Unity

您可以在此处找到有关其codeplex网站的更多详细信息:http://mvcturbine.codeplex.com/

希望有所帮助。

答案 1 :(得分:-1)

我使用Ninject用于类似目的。我确实引用了Ninject.Web.WebAPI,它可以很好地工作。

然而,这似乎不适用于MVC4 RC。