2

我想使用StructureMap的InstanceScope.HttpSession功能,我遇到了問題。我有以下的方法,我使用的測試:如何在StructureMap中使用InstanceScope.HttpSession?

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

我RepositoryRegistry類看起來是這樣的:

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

所以在我的客戶端代碼(ASP.NET MVC控制器),我像做了如下:

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

而且每次我從同一個會話中調用這個控制器時,我每次都會得到一個新的實例。我在這裏做錯了什麼?

+0

你試過我的回答嗎?我沒有這個麻煩,主要的區別是我的配置在global.asax上 – eglasius 2009-02-27 20:32:37

回答

1

將ObjectFactory.Configure移動到全局asax。每次請求對象時,都不應該重新配置結構映射。