Зависимость Внедрение использования сервиса внутри global.asax - PullRequest
2 голосов
/ 02 июня 2011

Я использую 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 Ответ

2 голосов
/ 02 июня 2011

Вместо внедрения попробуйте разрешить в вашем методе ...

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

Не забудьте установить преобразователь зависимостей для реализации Ninject перед использованием, например, в файле NinjectMVC3 (WebActivator).

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