我正在使用 StructureMap 并且我已经为 ISession 配置了HybridHttpOrLocalThreadStorage
生命周期。根据请求创建新会话并将其注入控制器。
现在,我的问题是关于处置。我已经阅读了许多介绍不同方法的文章。有些人在控制器中执行此操作,有些在存储库中,有些在 http 模块中,其他人在Application_EndRequest()
处理程序中执行。批评的范围从违反 SRP 到“创建对象的人应该负责其处置”等等。
所以底线是:
- 常见的方法是手动处理这些会话 - 为什么?我已经配置了我的容器来管理特定对象的生命周期。它(即 IoC)不应该为我管理它吗?
- 可供处置的选项是否以
Application_EndRequest()
“最佳”方式处理?
例如,这篇文章详细解释了一种可用的方法,但文章本身已有 2.5 年的历史。也许新版本的 StructureMap 会使大部分实现过时?