我正在使用依赖项注入(microsoft.extensions.dependencyInjection)开发.NET核心2.1控制台应用程序。代码如下所示:
class Program
{
static async Task Main(string[] args)
{
var configuration = GetConfiguration();
var serviceProvider = ConfigureServices(configuration);
var importer = serviceProvider.GetRequiredService<DataImporter>();
var result = await importer.ImportCentersAndStores(fileName);
}
private static IConfigurationRoot GetConfiguration()
{
return new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
}
private static ServiceProvider ConfigureServices(IConfigurationRoot configuration)
{
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
return new ServiceCollection()
.AddLogging(builder =>
{
builder.AddConfiguration(configuration.GetSection("Logging"));
builder.AddConsole();
})
.AddOptions()
.AddAutoMapper()
.AddDatabase(configuration.GetConnectionString("Blah"))
.AddTransient<DataImporter>()
.BuildServiceProvider();
}
}
这个
DataImporter
类与
ImportCentersAndStores
方法没有什么特别的-它做各种各样的事情,包括读取Excel文件和进行一些日志记录。我不认为代码的性质是相关的。
现在的问题是,每当在
数据转换器
类,堆栈跟踪没有包含我的代码的帧:
调试显示如下:
无论我是否捕获抛出的异常,都会发生这种情况。上述异常发生在
数据转换器
打电话来
进口中心和商店
. 所以我的代码应该有两帧。
没有用于调试的上下文。我不能检查变量或任何东西。
我不知道什么
System.Private.CoreLib
它占用了大部分调用堆栈。我不知道问题是否与我使用DI有关。
只是我的代码没有区别。异常设置是默认设置。我看不到任何应该这样做的调试选项。
如果您想知道:我已经在项目文件中包含了这个,以启用异步主方法:
<LangVersion>7.1</LangVersion>
有人能解释一下吗?