在一个ASP.NET 2.0网站中,我记录未处理异常的详细信息。我希望记录源文件名和行号,但当异常发生时,堆栈跟踪中没有这些信息。原因是在web.config编译设置中debug="false"(它是一个生产网站),因此服务器上没有生成PDB文件。有没有一种方法可以让ASP.NET在发布模式下生成调试符号文件?我不想预编译网站。
好的,我找到了答案。您可以将debug设置为“false”以获得优化,然后在system.codedom编译器设置中设置compilerOptions =“/debug:pdbonly”以获得符号。以下是相关的web.config摘录:
<system.web>
....
<compilation debug="false" defaultLanguage="c#">
...
</compilation>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
compilerOptions="/debug:pdbonly">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
...
</compilers>
</system.codedom>
除非我漏掉了什么,否则调试版本和发布版本的区别在于优化。您应该能够创建一个带有pdb的普通调试二进制文件,并确保在项目设置中启用所有优化设置。据我所知,除非有异常,否则不会加载pdb文件等...