Je reçois un message d'erreur "Référence d'objet non définie sur une instance d'un objet." lorsque j'essaie d'utiliser un référentiel UserRepos. La question est comment puis-je résoudre le référentiel d'utilisateurs au début de l'application (ASP.NET MVC) Qu'est-ce qui ne va pas ici?Comment résoudre un référentiel d'utilisateurs en utilisant Windsor IoC au début de l'application?
public class MyApplication : HttpApplication
{
public IUserRepository UserRepos;
public IWindsorContainer Container;
protected void Application_Start()
{
Container = new WindsorContainer();
// Application services
Container.Register(
Component.For<IUserRepository>().ImplementedBy<UserRepository>()
);
UserRepos = Container.Resolve<IUserRepository>();
}
private void OnAuthentication(object sender, EventArgs e)
{
if (Context.User != null)
{
if (Context.User.Identity.IsAuthenticated)
{
//Error here "Object reference not set to an instance of an object."
var user = UserRepos.GetUserByName(Context.User.Identity.Name);
var principal = new MyPrincipal(user);
Thread.CurrentPrincipal = Context.User = principal;
return;
}
}
}
}
Merci de nous aider!
Je dois ajouter que le codage OnAuthentication dans le HttpApplication n'est pas tout à fait correct (mais c'est hors de la portée de cette question) –
Merci Mauricio pour votre réponse! Après le débogage, je vois que OnAuthentication a été appelé plusieurs fois pour chaque bande de roulement. Par exemple, si j'utilise des images sur la page, il fera une demande pour chaque image et appellera OnAuthentication? Ai-je raison? Pourriez-vous expliquer pourquoi OnAuthentication ne devrait pas être utilisé dans HttpApplication? J'ai lu des articles et je vois que c'est une solution courante de faire comme ça. Par exemple http://mikehadlow.blogspot.com/2008/03/forms-authentication-with-mvc-framework.html Que conseilleriez-vous? – podeig
@podeig: utilise un HttpModule ou un filtre; ou créez une autre question spécifique sur stackoverflow à ce sujet. –