在.NET完整框架中,可以在发布版本生成的堆栈跟踪中包含文件名和行号,方法是在输出中包含调试信息,并将调试信息设置为pdb-only
或{{1} }。在ASP.NET Core和Azure Function Apps中工作时,如果将生成的XML添加到项目文件中,这些选项似乎不再可以通过UI访问或工作。当我创建一个新项目并在发布模式下运行时,文件名和行号不是堆栈跟踪的一部分。
如何在ASP.NET Core中的发布版本中包含文件名和行号?
更新:重新创建的步骤!
添加新的异常记录中间件:
full
在默认生成的app.Use(async (context, next) =>
{
try
{
await next.Invoke();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
});
:
ValuesController
构建项目(调试/发布无关紧要)。使用exe文件运行应用程序并点击/ api / values。 Stacktrace不包含文件名和行号:
[HttpGet]
public IEnumerable<string> Get()
{
throw new Exception();
}
(我不希望这变成一个利弊帖。我知道有些人认为包含这些信息是死亡罪,有些人不这样做。)
答案 0 :(得分:2)
要具有行号的堆栈跟踪:
(出于某些奇怪的原因,我仍然有一些没有行号的堆栈跟踪信息,但这是另一个问题)