我的网站在没有PDB文件的情况下崩溃

时间:2012-10-31 16:29:45

标签: c# asp.net iis-7 iis-6

我有一个在我的开发机器上工作正常的Web应用程序,但是当我在另一台机器上安装它时,它只会崩溃我添加到DLL中的一种新方法。

仔细研究一下,安装后不会使用PDB文件,而是在我的开发机器上。所以我试图在dev机器上删除它们,我的新方法崩溃了。其他方法根本不会崩溃。

我的方法只会抛出一个“NullPointerException”,当PDB文件存在时,它永远不会出现。

我知道PDB文件的用途(我在发布之前搜索了这个网站),但这不应该改变应用程序的工作方式。应该吗?

编辑:忘记提及所有内容都在<release>而非<debug>。这就是我对PDB文件提出质疑的原因。

1 个答案:

答案 0 :(得分:3)

我发现我的代码出了什么问题。 在记录器部分,使用log4Net,我有这样的代码:

public static void Info(string strMsg)
{
    StackTrace st = new StackTrace(true);
    StackFrame sf = st.GetFrame(1);
    _log.Info(string.Format("{0,-25} L{1:0000} {2}", sf.GetFileName().Substring(sf.GetFileName().LastIndexOf(@"\") + 1), sf.GetFileLineNumber(), strMsg));
}

所以我把条目改成了这样的东西:

public static void Debug(string strMsg)
{
    StackTrace st = new StackTrace(true);
#if DEBUG
    StackFrame sf = st.GetFrame(1);
    _log.Debug(string.Format("{0,-25} L{1:0000} {2}", sf.GetFileName().Substring(sf.GetFileName().LastIndexOf(@"\") + 1), sf.GetFileLineNumber(), strMsg));
#else
    _log.Debug(string.Format("{0}",strMsg));
#endif            
}

现在一切正常,没有PDB文件。 因此,从堆栈跟踪中选择信息需要PDB文件。