【问题标题】:Help with system.stackoverflowexception帮助 system.stackoverflowexception
【发布时间】:2012-10-27 14:08:35
【问题描述】:

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

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 网络服务。!!!!!!

编辑:

我也在两台服务器上运行它,2008R2 和 2003,完全相同的代码,在 2008R2 上它运行良好,但在 2003 年它停止了应用程序池。

【问题讨论】:

  • 您能否发布一些您的网络服务代码(可能是一些网络方法),以便我们了解您的网络服务在做什么?
  • 是的,不要在标题中添加“紧急”之类的内容。这不是一个付费支持网站,没有人会因为您遇到紧急情况而放弃一切并帮助您。
  • @Tim - 抱歉我不能发布源代码。 @Chris - 感谢您的帮助。 @Ruben - 它实际上是与代码相关的

标签: .net stack-overflow web-services


【解决方案1】:

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

CLR20r3解释

P1 应用程序名称

P2 应用版本

P3应用时间戳

P4 组件/模块名称

P5 组装/模块版本

P6 组装/模块时间戳

P7 方法定义

P8 IL 偏移量

P9 异常名称

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

然后用reflector查看代码,在IL模式下查看,在P8找到IL的那一行

通常它会将您直接指向引发异常的行。

【讨论】:

  • 这是 Web 应用程序所期望的 IIS
  • 你不想让我在 w3wp 上运行 Refection,我认为是我的 Web 应用程序导致了问题,而不是在 IIS 中。我错过了什么?
  • 不,在这种情况下,您并不想真正反汇编 w3wp.exe。我只是提供了一些与您遇到的错误类型相关的信息。在这种情况下,堆栈溢出很可能是一个递归问题,尽管没有代码? app_code.ahowircm 将为您网站上的特定页面编译 dll。应该在 bin 目录中。
  • 我在任何地方都没有看到任何名为 ahowircm 的东西
  • try "C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files" 在某处将是动态编译的类。把它扔进反射器,看看它是否能让你更清楚地知道事情在哪里搞砸了。 VS2005/8 中无法复制吗
【解决方案2】:

这通常指向一个失控的递归调用(有意或无意)。不看代码就很难判断。

【讨论】:

  • 我同意这听起来像是递归集或从页面属性获取。
  • 这是一个很少使用的方法中的递归调用。
【解决方案3】:

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

【讨论】:

  • 同意,听起来像是意外数据
【解决方案4】:

您确实需要完整的堆栈跟踪来弄清楚发生了什么。您是否在任何地方记录您的异常?如果没有,您可以快速wireup an event handler

【讨论】:

    【解决方案5】:

    这是与漏洞解析问题有关的问题。就像我为您提供了很好的示例,因此您可以轻松理解:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-26
      • 2020-12-08
      • 2018-12-21
      • 2011-06-20
      • 2011-07-28
      • 2011-10-04
      • 2011-08-03
      • 2011-11-27
      相关资源
      最近更新 更多