我在Application_EndRequest中调用ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects(),它按预期触发,但它不会导致容器内的任何Http-Scoped实例被Dispose。如果我在Application_EndRequest中调用WhatDoIHave,我可以看到我想让Dispose调用的Http-Scoped实例,但它不会发生!任何想法为什么不呢?
当我查看HttpContext.Current.Items时,StructureMap没有隐藏任何内容,我猜它应该有?注册为请求范围的项目示例如下:
For<IConnectionProvider>().HybridHttpOrThreadLocalScoped().Use<ConnectionProvider>();
IConnectionProvider继承自IDisposable。
答案 0 :(得分:0)
这是我的菜鸟!如果一个对象位于配置为Singleton作用域的依赖关系图上方,那么就会挂在我希望在每个请求结束时处理的对象(连接提供程序)上!将此对象的范围从Singleton更改为Transient导致所有内容开始按照我的意愿开始工作!