Sti*_*gar 4 c# asp.net asp.net-mvc ninject asp.net-web-api
无论我做什么,我似乎无法让Ninject在带有Web API的ASP.NET MVC应用程序中处理请求范围内的对象.
我在做什么:
我在我的应用程序中添加了以下类:
public class SomeDisposable:IDisposable {public void Dispose(){System.Diagnostics.Debug.WriteLine("test"); }}
我在NinjectWebCommon RegisterServices方法中添加以下绑定
kernel.Bind()ToSelf()InRequestScope().;
我将一个SomeDisposable类型的对象添加到Home控制器
public HomeController(SomeDisposable some){}
我运行应用程序并在HomeController构造函数和SomeDisposable类的Dispose方法中放置一个断点.控制器接收一个对象(可能来自Ninject),页面加载但从不调用Dispose方法.
在这一点上,事情已经破碎,但我添加了一个Web API控制器,安装Ninject.WebApi打包并使用WebAPI控制器重复实验,我得到了相同的结果.
我已经阅读了很多问题,包括这一个问题 - 当超出范围时,Ninject不会调用对象上的Dispose和Ninject文档https://github.com/ninject/Ninject.Web.Common/wiki/InRequestScope,它们都表示由于Ninject.Web.Common包含了对OnePerRequestHttpModule的注册(是的,它存在),因此处理应该正常工作,但事实并非如此.我还尝试在web.config中添加PerRequest模块,并收到错误消息,说我不能在集成模式下使用此部分.
此时我迷失了.我怀疑集成模式或OWIN与此有关,但我不知道如何调试它或如何解决它.有什么建议?
未处置的对象是Ninject.Web.Common版本3.2.2之前的问题,如下所述:InRequestScope无法处置对象
正如您通过nuget安装Ninject一样,您可能已安装了最早的受支持的依赖项.这可以通过使用:
Install-Packages Ninject.MVC5 -DependencyVersion Highest
Run Code Online (Sandbox Code Playgroud)
请确认您使用的是所有Ninject软件包的当前版本.
| 归档时间: |
|
| 查看次数: |
2058 次 |
| 最近记录: |