我在一个asp.net Web表单应用程序中使用Ninject的2.2.0.0版本,在几百个请求之后,它有时会在Binding类的GetProvider方法中抛出NullReferenceException.
堆栈跟踪示例:http://pastebin.com/BbhsPQMT
仅当我对应用程序进行压力测试并且异常的来源通常不同(解析不同的接口)时才会发生异常.
为了试图理解为什么会出现这个问题,我查看了Ninject源代码并插入了一些代码行以用于调试目的.我后来确认null的对象是Binding类中的ProviderCallback属性.
我还在ProviderCallback属性的set运算符中放入了一些代码,以便了解它是否被设置为null.在运行一些测试并查看一些内存转储后,似乎ProviderCallback属性未设置为空值,因此我认为GC正在收集该实例.
我仍然不明白为什么会发生这种情况......
任何帮助是极大的赞赏.
编辑:我们升级到最新版本的Ninject只是为了检查异常是否仍然发生但我们在对应用程序进行压力测试后得到了相同的异常:http://pastebin.com/YaiaZndz