我有几个依赖注入(inject)服务,这些服务依赖于诸如HTTP上下文之类的东西。现在,我正在将它们配置为Application_Start处理程序中的Windsor容器单例,这显然是此类服务的问题。

处理此问题的最佳方法是什么?我正在考虑将它们设置为 transient ,然后在每个HTTP请求之后将其释放。但是,将HTTP上下文注入(inject)其中的最佳方法/位置是什么? Controller 工厂还是其他地方?

最佳答案

使用温莎城堡,您可以使用PerWebRequest生命周期-应该非常符合您的要求。

这意味着您只需将HTTP内容注入(inject)服务中,容器将负责适当的生命周期管理。但是,这还要求您还将所有这些服务(以及这些服务的所有使用者等等)注册为PerWebRequest(或Transient),因为如果将它们注册为Singletons,它们将保持陈旧(并且可能被处置)上下文。

关于asp.net-mvc - ASP.NET MVC和Windsor.CaSTLe : working with HttpContext-dependent services,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1818888/

10-12 03:19