我怎么能得到行号和文件名从一个异常在网核心
本文关键字:一个 异常 核心 怎么能 文件名 | 更新日期: 2023-09-27 18:09:34
我过去可以使用下面的
来获取异常的行号和类 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"并得到相同的结果。Null FileName和0 FileNumber。我甚至开始了一个新项目,只复制他的代码和相同的结果。文件名称为空,文件编号为0。StackTrace": "4.0.1"
更新::
我在不同的工作站上尝试了我能想到的每一个选项。它工作得很好。所以显然是我工作站上的某些东西失败了…所以这个问题是环境问题而不是包装的问题。当我找出问题所在后,我会再次更新。所以经过进一步有趣的调查。虽然它是环境的,但它也是特定于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
每当我试图从一个网络核心应用程序运行它。很明显,Core应用程序访问这些服务的方式与传统框架不同,并且它与应用于系统的安全策略相冲突。我已经联系了我们的微软代表,希望获得更多信息,看看这个问题是否无法解决。将继续更新
在我的project.json
文件中使用"System.Diagnostics.StackTrace": "4.0.1"
,我能够通过以下代码正确获取错误的行号和文件名:
class Program
{
static void Main(string[] args)
{
var test = new Test();
try
{
test.TriggerError();
}
catch(Exception ex)
{
var trace = new StackTrace(ex, true);
var frame = trace.GetFrames().Last();
var lineNumber = frame.GetFileLineNumber();
var fileName = frame.GetFileName();
}
}
}
class Test
{
public void TriggerError()
{
throw new Exception();
}
}