我的应用程序突然在应用程序事件查看器中解决了这个问题:
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年它停止了应用程序池。
答案 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);
}
}
}