2

Ich versuche, die Funktion InstanceScope.HttpSession von StructureMap zu verwenden, und es treten Probleme auf. Ich habe die folgende Methode verwende ich für den Test:Wie verwende ich InstanceScope.HttpSession in StructureMap?

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

Meine RepositoryRegistry Klasse sieht wie folgt aus:

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

Also in meinem Client-Code (ASP.NET MVC-Controller) Ich mag etwas tun, das folgende:

Und jedes Mal, wenn ich diesen Controller sogar aus der gleichen Sitzung aufrufen, bekomme ich jedes Mal eine neue Instanz. Was mache ich hier falsch?

+0

Haben Sie meine Antwort versucht? Ich habe dieses Problem nicht, und der Hauptunterschied ist, dass meine Konfiguration auf dem global.asax ist – eglasius

Antwort

1

Verschieben Sie die ObjectFactory.Configure in den globalen asax. Sie sollten die Strukturkarte nicht jedes Mal neu konfigurieren, wenn ein Objekt angefordert wird.