如何调试“我的类的类型初始化程序”引发exception“

我得到了exception: The type initializer for 'my class' threw an exception. 运行我的Web应用程序后在浏览器中。 由于这似乎是从视图(.aspx)生成的错误消息,因此我无法看到堆栈跟踪或此错误源的任何日志。

我已经阅读了一些网络,调试的一个解决方案是抛出一个TypeInitializationException ,然后查看内部exception以找出错误。 当我不知道用try / catch包围代码的位置时,我该怎么做?

这可能是由错误的静态构造函数或静态属性/字段的内联初始化错误引起的。 例如:

 class A { static A() { //buggy code here } static SomeField f = new ThisClassThrowsWhenConstructed(); // <-- or here } 

最后我发现这个问题的原因是我项目的AppConfig设置。 是的,我有两个C#项目, Project1Project2

Project1包含Static类MyDetails

 public static MyDetails { public static int _LogLevel = Int32.Parse(ConfigurationManager.AppSettings["LogLevel"]) public static GetData() { ----code---- ----code---- } } 

我在Project1中有以下appConfig设置

    

Project2调用函数MyDetails.GetData() ,这是我正在调试的项目。 由于Project2是目标项目,因此ConfigurationManager.AppSettings [“LogLevel”]行将尝试从Project2读取设置LogLevel。 但LogLevel设置仅在Project1中可用。 所以,我们需要在Project2中添加appsettings。

问题在Project2的 appConfig中添加以下appsettings后,抛出exception的类型初始化程序已经解决了,

    

当“我的类”的静态构造函数崩溃时抛出此exception。 请把你的断点放在那里。

在类的静态构造函数中有一些错误,而不是抛出该错误, CLR将抛出TypeInitializationException