StructureMap ReleaseAndDisposeAllHttpScopedObjects不会导致Dispose调用

时间:2011-10-27 11:45:37

标签: asp.net-mvc-3 inversion-of-control ioc-container structuremap

我在Application_EndRequest中调用ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects(),它按预期触发,但它不会导致容器内的任何Http-Scoped实例被Dispose。如果我在Application_EndRequest中调用WhatDoIHave,我可以看到我想让Dispose调用的Http-Scoped实例,但它不会发生!任何想法为什么不呢?

当我查看HttpContext.Current.Items时,StructureMap没有隐藏任何内容,我猜它应该有?注册为请求范围的项目示例如下:

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

IConnectionProvider继承自IDisposable。

1 个答案:

答案 0 :(得分:0)

这是我的菜鸟!如果一个对象位于配置为Singleton作用域的依赖关系图上方,那么就会挂在我希望在每个请求结束时处理的对象(连接提供程序)上!将此对象的范围从Singleton更改为Transient导致所有内容开始按照我的意愿开始工作!