0

我已经竭尽全力改进我的 web 服务中的错误处理 - 特别是显示 StackTrace,如下例所示:

catch (Exception ex)
        {
            EventLog log = new EventLog();
            log.Source = g_EventSource;
            StringBuilder msg = new StringBuilder("Exception in UpdateRecord method has been logged:");
            msg.Append(Environment.NewLine);
            msg.Append("passedURL="); msg.Append(passedURL);
            msg.Append(Environment.NewLine);
            msg.Append(ex.Message);
            msg.Append(Environment.NewLine); 
            msg.Append(ex.Source);
            msg.Append(Environment.NewLine);
            msg.Append(ex.StackTrace);
            log.WriteEntry(msg.ToString(), EventLogEntryType.Error, 100);
            return msg.ToString();
        }

我的问题是当我发布我的 web 服务并将其编译为 RELEASE 而不是 DEBUG 时会发生什么?我现在只在调试模式下编译时发布 .dll 和 web.config(无源),但是当记录错误时,StackTrace 指向我的开发机器中文件的行号,例如:

C:\Documents and Settings\johna\My Documents\Visual Studio 2008\Projects\   etc.

简而言之,RELEASE 模式的 DLL 是否仍会显示上述堆栈跟踪?我认为会但不确定;我的系统管理员在我们准备进入另一个部署级别时提出了这个问题。

4

1 回答 1

1

您可以在堆栈跟踪消息中包含行号,但您需要包含 .PDB 文件。即使在发布模式下也没有问题。

于 2009-12-05T00:09:38.897 回答