Asp.net 长时间正常运行后出现NullReferenceException
我有一个ASP.Net应用程序,它在长时间运行后开始抛出NUllReferenceExceptions。在每个单独的会话中,我们都会在早期使用这些代码,在这里我们试图建立某种类型的推荐信息。问题是,我不知道什么可以抛出这个异常 所讨论的方法(堆栈跟踪中的最顶层)是: 它所属的类继承自ArrayList。我已经检查过了,唯一添加到这个ArrayList的是Referral类的实例(它有多个构造函数,都很简单) 我们所知道的是,我们可以有一个没有引用信息的请求,它会导致抛出异常。同时,如果一个推荐人的请求进来了,它就可以正常工作。在这两种情况下,都没有在查询字符串中传递任何内容(因此我认为您可以跳到'3注释 所以,我的问题是,这个方法中的什么会导致抛出NullReferenceException?如果您需要添加额外的代码段或类定义,只需呼喊 Utility.RequestSubDomain具有合理的复杂性,因此我怀疑它是否被内联并从堆栈跟踪中删除。它的顶部是:Asp.net 长时间正常运行后出现NullReferenceException,asp.net,vb.net,nullreferenceexception,Asp.net,Vb.net,Nullreferenceexception,我有一个ASP.Net应用程序,它在长时间运行后开始抛出NUllReferenceExceptions。在每个单独的会话中,我们都会在早期使用这些代码,在这里我们试图建立某种类型的推荐信息。问题是,我不知道什么可以抛出这个异常 所讨论的方法(堆栈跟踪中的最顶层)是: 它所属的类继承自ArrayList。我已经检查过了,唯一添加到这个ArrayList的是Referral类的实例(它有多个构造函数,都很简单) 我们所知道的是,我们可以有一个没有引用信息的请求,它会导致抛出异常。同时,如果一个推荐人
Public Shared Function RequestSubDomain(ByVal uri As System.Uri) As String
If uri Is Nothing Then
Return ""
End If
任何关于查找更多信息的帮助或建议,我们都将不胜感激。很明显(因为有这么多问题),这只发生在生产中,所以我不想开启调试。我仔细研究了一下,想到的最有可能的两件事是:
可以为空wrRequest
中可能包含空值,导致枚举器返回空值ArrayList
me.GetEnumerator
返回一个枚举器,其中一个项的值为空
For Each item As Referral In Me
item.Names ' Can item be null here causing the exception on the getter of Names?
Next item
事实证明,arraylist中有一个空值——在某些情况下,多个线程处理同一个对象(从arraylist继承)并调用Add()。所以出现空值是因为内部索引被不同的线程增加了两次。多长时间?多长时间?我假设一个月…@Aristos-我们可以在发生这种情况的间隔数周,循环使用应用程序池会导致它消失。我们通常每天有400到1000个新会话。我有类似的想法我在2台服务器上发现了问题。我发现在4-6周后,我们出现了内存泄漏(我不知道从哪里找到的,我也找不到)这会导致缓存内存超出限制,然后开始出现神秘的错误。我使用ProcessExplorer进行监视。每台服务器每天有1000-2000个新会话。@Aristos-我办公室的其他人认为内存泄漏(由于发生之前的时间长)作为原因,但我怀疑那些有推荐人的客户是否仍然会发现该网站可用,而那些没有原因的客户会抛出异常。我一直在阅读adplus/windbg/sos,有点不想获取一个转储文件并进行分析,但我相信大多数客户确实有推荐人,我不想停止该网站10分钟如果可能的话,获取转储文件的分钟数。可能的重复我正在尝试消除这些可能性。从调用堆栈中,wrRequest来自Page.Request,希望它永远不会为null。我已经注释掉了“Inherits ArrayList”行,唯一添加到列表中的代码是执行新的引用()事先在线。我会继续查找。计划在下次系统处于这种状态时使用ADPlus转储系统,这将有希望让我看看ArrayList中是否有null(不知怎么的)。好吧,最后在它处于愚蠢状态时捕获内存转储,ArrayList中确实有null元素(而且比我预期的要多),所以现在是时候对更多的代码进行搜索了。
For Each item As Referral In Me
item.Names ' Can item be null here causing the exception on the getter of Names?
Next item