2

J'essaie d'utiliser la fonction InstanceScope.HttpSession de StructureMap et je rencontre des problèmes. J'ai la méthode suivante j'utilise pour les tests:Comment utiliser InstanceScope.HttpSession dans StructureMap?

public static class StructureMapTest { 
    public static T Get<T>() { 
     ObjectFactory.Configure(x => x.AddRegistry(new RepositoryRegistry())); 
     return ObjectFactory.GetInstance<T>(); 
    } 
} 

Ma classe RepositoryRegistry ressemble à ceci:

public class RepositoryRegistry : Registry { 
    public RepositoryRegistry() { 
     ForRequestedType<IClientRepository>() 
      .CacheBy(InstanceScope.HttpSession) 
      .TheDefault.Is.OfConcreteType<ClientRepository>(); 
    } 
} 

Donc, dans mon code client (contrôleur ASP.NET MVC) je fais quelque chose comme suivant:

public ActionResult InjectionTest() { 
    return Content(DataProvider.Clients.CreatedDate.ToString()); 
} 

Et chaque fois que j'appelle ce contrôleur même à partir de la même session, j'obtiens une nouvelle instance à chaque fois. Qu'est-ce que je fais mal ici?

+0

Avez-vous essayé ma réponse? Je n'ai pas ce problème, et la principale différence est que ma configuration est sur le global.asax – eglasius

Répondre

1

Déplacez ObjectFactory.Configure vers l'asax global. Vous n'êtes pas censé continuer à reconfigurer structuremap chaque fois qu'un objet est demandé.

Questions connexes