有关system.stackoverflowexception的帮助

时间:2009-12-02 14:07:45

标签: .net stack-overflow web-services

我的应用程序突然在应用程序事件查看器中解决了这个问题:

EventType clr20r3,P1 w3wp.exe,P2 6.0.3790.3959,P3 45d6968e,P4 app_code.ahowircm,P5 0.0.0.0,P6 4b167253,P7 30,P8 0,P9 system.stackoverflowexception,P10 NIL。

自昨天以来没有任何改变,一切都运转良好。服务器在Windows Server 2003上运行一些.net 2.0 webservices。!!!!!

修改

另外我在两台服务器上运行它,2008R2和2003,完全相同的代码,在2008R2上工作正常,但在2003年它停止了应用程序池。

5 个答案:

答案 0 :(得分:6)

这不是一个真正的答案,更多是关于这些CL20r3事件日志条目的“相关有趣信息”。

CLR20r3解释

P1申请名称

P2应用程序版本

P3Application时间戳

P4装配/模块名称

P5装配/模块版本

P6装配/模块时间戳

P7 MethodDef

P8 IL偏移量

P9例外名称

您可以在P1上使用ILDASM,搜索MethodDef为060000xx(其中xx为P7),以获取方法抛出。

然后使用反射器查看代码,在IL模式下查看代码并在P8找到IL行。

通常它会直接指向抛出异常的行。

答案 1 :(得分:4)

这通常指向失控的递归调用(有意或无意)。很难说没看到一些代码。

答案 2 :(得分:3)

您的代码可能没有更改,但您的数据可能存在。查看最近添加的数据是否会导致奇怪的情况发生。

答案 3 :(得分:1)

你真的需要一个完整的堆栈跟踪来弄清楚发生了什么。你在任何地方记录你的例外吗?如果没有,您可以快速wireup an event handler

答案 4 :(得分:0)

这是与循环孔解析问题有关的问题。就像我有一个很好的例子,你可以轻松理解:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AddFunction;

namespace sharat
{
public class Program
{
public class A
{
  public  A()
    {
        object obj = new B();
    }
}
public  class B
{
   public  B()
    {
        object obj = new A();
    }

 }



    public  static void Main(string[] args)

    {
      //  long i = 10;
      //  Console.Write(i.ToString());
      //  object obj = i;
      //  Console.WriteLine(obj.ToString());
      //  i++;

      //Console.WriteLine(i.ToString());
      //i++;
      ////obj = i;
      //Console.WriteLine(obj.ToString());
      //Console.WriteLine(i.ToString());
      //Console.WriteLine(obj.ToString());
      long a = 9;
      long b = 130;

      long d = Add.add(a,b);
        Console.WriteLine(d);
        Console.ReadLine();
        object test = new B();
        Console.WriteLine(d);
     }
    }
   }