代码之家  ›  专栏  ›  技术社区  ›  Hector Minaya

System.StackOverflowException帮助

  •  0
  • Hector Minaya  · 技术社区  · 15 年前

    突然间,我的应用程序在应用程序事件查看器中发布了:

    事件类型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 Web服务。!!!!!!!

    编辑:

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

    5 回复  |  直到 12 年前
        1
  •  4
  •   Otávio Décio    15 年前

    这通常指向失控的递归调用(是否有意)。看不到代码很难分辨。

        2
  •  6
  •   MattC    13 年前

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

    CLR20R3说明

    P1应用程序名称

    P2应用程序版本

    P3申请时间戳

    P4组件/模块名称

    P5组件/模块版本

    P6组件/模块时间戳

    P7法DEF

    P8IL偏移量

    P9异常名称

    您可以在p1上使用ildasm,搜索methoddef 0600000xx(其中xx是p7),以获得方法抛出。

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

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

        3
  •  3
  •   Bravax    15 年前

    您的代码可能没有更改,但数据可能已经更改。查看最近添加的任何数据是否会导致出现异常情况。

        4
  •  1
  •   Ryan Emerle    15 年前

    您真的需要一个完整的堆栈跟踪来了解发生了什么。你把例外记录在哪里了吗?如果没有,你可以很快 wireup an event handler .

        5
  •  0
  •   Uwe Keim Chand    12 年前

    这是与循环孔解析问题相关的问题。就像我给你举了一个很好的例子,所以你很容易理解:

    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);
         }
        }
       }