我正在使用StructureMap,我已经使用HybridHttpOrLocalThreadStorage
生命周期配置了ISession。创建新会话并根据请求将其注入控制器。
现在,我的问题是处理问题。我读过一些文章,介绍了不同方法的数量。有些人在控制器中执行此操作,一些在存储库中执行,一些在http模块中执行,另一些人在Application_EndRequest()
处理程序中执行此操作。批评的范围从SRP违规到“创造对象的人应该负责处理”等等。
所以底线是:
Application_EndRequest()
处理它“最好的”方式吗?例如,this article详细解释了一种可用的方法,但该文章本身已超过2.5年。也许新版本的StructureMap使大多数实现过时了?
答案 0 :(得分:2)
如果您使用的是RavenDB .net客户端,您将使用DocumentStore和DocumentSession。这两个对象在后台做了相当多的工作;本地缓存提一件事。为了保持清洁和高效,每个会话都应该在工作完成后调用session.dispose()。应用程序结束时应调用documentStore.Dispose()。