我在 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