我正在使用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包创建的。
答案 0 :(得分:2)
而不是注射尝试在你的方法中解决...
protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
{
var userService = DependencyResolver.Current.GetService<IUserService>();
...
}
不要忘记在使用前将依赖项解析器设置为Ninject的实现,例如在NinjectMVC3(WebActivator)文件中。
DependencyResolver.SetResolver(new NinjectDependencyResolver( ... ));