Проверка наличия объекта в контейнере StructureMap - PullRequest
2 голосов
/ 06 апреля 2010

Я использую StructureMap для обработки создания NHibernate's ISessionFactory и ISession. Я определил ISessionFactory как синглтон, так что он создается только один раз для моего веб-приложения, и я ISession как гибрид, так что он будет открыт только один раз за веб-запрос.

Я хочу убедиться, что в конце каждого веб-запроса я правильно распоряжаться ISession, если он был создан для этого веб-запроса. Я догадался Я мог бы поместить некоторый код в моей подпрограмме Application_EndRequest, чтобы сначала проверьте, была ли создана ISession, и если это так, вызовите ISession.Dispose.

Мой текущий обходной путь - просто открыть ISession на Application_BeginRequest затем избавиться от него на Application_EndRequest, но это кажется несколько расточительным в этих статических файловых запросов изображения и CSS-файлы и еще много чего создаст ISession без используй это. Я знаю, что общее снижение производительности незначительно, так как ISessions очень легкие, но это раздражает, видя все эти сессии создаются внутри NHProf.

1 Ответ

0 голосов
/ 07 апреля 2010

После обновления до StructureMap 2.6.1 я использовал новую функцию ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects (), чтобы добиться того, чего я хотел.

...