我曾经能够通过以下方式提取我的行号和类别以获取异常
System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
var stackFrame = trace.GetFrame(trace.FrameCount - 1);
var lineNumber = stackFrame.GetFileLineNumber();
var file = stackFrame.GetFileName();
然而,现在每当我尝试提取该信息时,在 .Net Core 1.0 中使用类库时,行号始终为 0,文件名始终为 null。
我将 needfileinfo 布尔值设置为 true 并且 pdb 文件存在。这是一个在 NET Core 框架中还无法工作的功能,还是我现在应该采取一些不同的方法?
谈谈下面提供的答案。我已经在使用 "System.Diagnostics.StackTrace": "4.0.1" 并得到相同的结果。文件名为空,文件编号为 0。我什至开始了一个新项目,仅复制他的代码和相同的结果。使用“System.Diagnostics.StackTrace”的空文件名和 0 文件号:“4.0.1”
UPDATE::
追求我能想到的每一个选项,我在不同的工作站上尝试了这个。而且效果很好。很明显,我的工作站上的某些东西出现了故障......所以问题是环境问题,而不是特定于该软件包。当我弄清楚问题是什么后,我会再次更新。
所以经过进一步调查就足够有趣了。虽然它是环境性的,但它也是特定于 Net Core 的。在同一环境中的非 Net Core 应用程序中,StackTrace 工作正常。但是,我的事件日志中出现安全审核失败的情况
A privileged service was called.
Service:
Server: Security
Service Name: -
Process:
Process ID: 0x55a0
Process Name: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x64\msvsmon.exe
Service Request Information:
Privileges: SeCreateGlobalPrivilege
and
A privileged service was called.
Service:
Server: Security
Service Name: -
Process:
Process ID: 0x5628
Process Name: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\14.0.0\IntelliTrace.exe
Service Request Information:
Privileges: SeCreateGlobalPrivilege
每当我尝试从网络核心应用程序运行它时。
显然,核心应用程序访问这些服务的方式与传统框架不同,并且与应用于系统的安全策略相冲突。我已联系我们的 Microsoft 代表寻求更多信息,看看问题是否无法解决。会继续更新。