Объекты, созданные AsPerRequestSingleton(), не удаляются автоматически
Я пытаюсь использовать внедрение зависимостей с TinyIOC в NancyFX.
То, что я намерен сделать, это иметь один SqlConnection на запрос, который должен быть закрыт автоматически. До сих пор я создавал CustomBootstrapper, который переопределяет метод ConfigureRequestContainer и регистрирует мой IDbConnectionService с помощью метода AsPerRequestSingleton().
Это должно гарантировать, что SqlConnectionService существует для каждого запроса и должен быть уничтожен после запроса. По крайней мере, это то, что я думаю, должно быть сделано после прочтения документации.
Пользовательский загрузчик:
https://github.com/mschlechter/NancyFxTutorial/blob/master/NancyFxTutorial.Web/CustomBootstrapper.cs
И SqlConnectionService:
Этот сервис реализует интерфейс IDisposable и должен располагать базовым SqlConnection (IDbConnectionService наследуется от IDisposable).
К сожалению, этот метод Dispose() никогда не вызывается. Так что, как сейчас обстоят дела, он будет держать соединения с базой данных открытыми. Что (действительно) плохо:-)
Мой вопрос заключается в том, как это исправить с помощью внедрения зависимостей.
Я пытаюсь подражать шаблон, который я знаю из Spring MVC на Java. Каждый сервис может вызвать getCurrentSession(), чтобы получить сеанс Hibernate. ScopeFactory в области запроса внедряется, и каждый сервис может выполнять sessionFactory.getCurrentSession() для получения текущего сеанса.
Я хотел бы сделать то же самое, используя NancyFX и TinyIOC.
Возвращаясь к моему первоначальному вопросу: почему метод Dispose не вызывается для объекта, созданного с помощью AsPerRequestSingleton(), и что я могу сделать, чтобы получить ожидаемый результат? (объект, который живет во время действия области запроса / ответа, и будет автоматически удален, когда будет сделано)
Спасибо заранее и с наилучшими пожеланиями, Марк Шлехтер