【发布时间】:2012-11-20 14:51:33
【问题描述】:
我在一个 asp.net Web 表单应用程序中使用 2.2.0.0 版的 Ninject,经过几百次请求后,它有时会在 Binding 类的 GetProvider 方法中引发 NullReferenceException。
示例堆栈跟踪:http://pastebin.com/BbhsPQMT
仅当我对应用程序进行压力测试并且异常的来源通常不同(解析不同的接口)时才会发生异常。
为了试图理解为什么会出现这个问题,我查看了 Ninject 源代码并插入了一些代码行以进行调试。后来确认为null的对象是Binding类中的ProviderCallback属性。
我还在 ProviderCallback 属性的 set 运算符中添加了一些代码,以便了解它是否被设置为 null。在运行了一些测试并查看了一些内存转储之后,似乎 ProviderCallback 属性没有被设置为空值,所以我认为实例正在被 GC 收集。
我还是不明白为什么会这样……
非常感谢任何帮助。
编辑:我们升级到最新版本的 Ninject 只是为了检查异常是否仍然发生,但在对应用程序进行压力测试后我们得到了同样的异常:http://pastebin.com/YaiaZndz
【问题讨论】:
-
你应该报告这个。 NullReferenceException 始终表示引发它的代码中的错误。
-
尝试更新到最新的 Ninject 版本。
标签: c# asp.net exception dependency-injection ninject