Как использовать InstanceScope.HttpSession в StructureMap?

Я пытаюсь использовать функцию InstanceScope.HttpSession StructureMap, и у меня возникают проблемы. У меня есть следующий метод, который я использую для тестирования:

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());
}

И каждый раз, когда я вызываю этот контроллер даже из одной и той же сессии, я каждый раз получаю новый экземпляр. Что я здесь делаю неправильно?


person JC Grubbs    schedule 26.02.2009    source источник
comment
Вы пробовали мой ответ? У меня нет этой проблемы, и основное отличие состоит в том, что моя конфигурация находится в файле global.asax.   -  person eglasius    schedule 27.02.2009


Ответы (1)


Переместите ObjectFactory.Configure в глобальный asax. Вы не должны перенастраивать карту структуры каждый раз, когда запрашивается объект.

person eglasius    schedule 27.02.2009