JF *_*ieu 7 c# asp.net exception-handling exception
我得到了例外:The type initializer for 'my class' threw an exception.运行我的Web应用程序后在我的浏览器中.由于这似乎是从视图(.aspx)生成的错误消息,因此我无法看到堆栈跟踪或此错误源的任何日志.
我已经在网上阅读了一下,调试的一个解决方案是抛出一个TypeInitializationException然后查看内部异常以找出错误.当我不知道使用try/catch包围代码的位置时,我该怎么做?
spe*_*der 11
这可能是由错误的静态构造函数或静态属性/字段的错误内联初始化引起的.例如:
class A
{
static A()
{
//buggy code here
}
static SomeField f = new ThisClassThrowsWhenConstructed(); // <-- or here
}
Run Code Online (Sandbox Code Playgroud)
最后我发现这个问题的原因是我的项目的 AppConfig 设置。是的,我有两个 C# 项目Project1和Project2。
Project1包含静态类MyDetails
public static MyDetails
{
public static int _LogLevel = Int32.Parse(ConfigurationManager.AppSettings["LogLevel"])
public static GetData()
{
----code----
----code----
}
}
Run Code Online (Sandbox Code Playgroud)
我在 Project1 中有以下 appConfig 设置
<appSettings>
<add key="LogLevel" value="5"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
函数MyDetails.GetData()正在从Project2调用,这是我现在正在调试的项目。由于Project2 是目标项目,行ConfigurationManager.AppSettings["LogLevel"]将尝试从Project2读取设置 LogLevel 。但LogLevel设置仅在Project1 中可用。所以,我们需要在Project2 中添加 appsettings 。
在Project2 的appConfig 中添加以下 appsettings 后,The type initializer for throw an exception 问题已解决,
<appSettings>
<add key="LogLevel" value="5"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26913 次 |
| 最近记录: |