StructureMap ReleaseAndDisposeAllHttpScopedObjects не вызывает вызовы Dispose - PullRequest
1 голос
/ 27 октября 2011

Я вызываю ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects () в Application_EndRequest, который запускается, как и ожидалось, однако это не приводит к тому, что экземпляры Http-Scoped внутри контейнера становятся Dispose'd.Если я вызываю WhatDoIHave в Application_EndRequest, я вижу экземпляры Http-Scoped, для которых я хочу вызвать Dispose, но этого не происходит!Есть идеи, почему бы и нет?

Когда я смотрю в HttpContext.Current.Items StructureMap ничего не спрятал там, и я предполагаю, что это должно быть?Ниже приведен пример элемента, зарегистрированного как область запроса:

For<IConnectionProvider>().HybridHttpOrThreadLocalScoped().Use<ConnectionProvider>();

IConnectionProvider наследуется от IDisposable.

1 Ответ

0 голосов
/ 02 ноября 2011

Это был мой нуб! Если бы объект выше графа зависимостей был сконфигурирован как область действия Singleton, таким образом, он завис на объекте (провайдере соединений), от которого я хотел избавиться в конце каждого запроса! Изменение области видимости этого объекта с Singleton на Transient привело к тому, что все начало работать так, как я хотел!

...