依赖注入global.asax中的服务使用

时间:2011-06-02 18:05:07

标签: asp.net-mvc asp.net-mvc-3 ninject

我正在使用Ninject来进行依赖注入。我有一个userService,我需要从global.asax文件中访问它。

我如何依赖注入?

    private IUserService userService;//<--this
    protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
    {
        HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
        if (authCookie != null)
        {
            FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
            var identity = new CustomIdentity(authTicket);
            string[] userRoles = userService.GetRolesForUser(identity.Name);// <-- Used here.
            var principal = new GenericPrincipal(identity, userRoles);
            Context.User = principal;
        }
    }

我使用NinjectMVC3在另一个文件(WebActivator)中进行了绑定。这是由nuget包创建的。

1 个答案:

答案 0 :(得分:2)

而不是注射尝试在你的方法中解决...

protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
{
  var userService = DependencyResolver.Current.GetService<IUserService>();
  ...
}

不要忘记在使用前将依赖项解析器设置为Ninject的实现,例如在NinjectMVC3(WebActivator)文件中。

DependencyResolver.SetResolver(new NinjectDependencyResolver( ... ));