在MVC Core 2.0中,建议(asp-net-core-2-seed-database)db-seeding和其他初始化(从EF工具开始时不应运行)放在Program.cs Main方法之间调用BuildWebHost和Run之间
为了启动队列处理器单例,我的Main看起来像这样:
public static void Main(string[] args)
{
var host = BuildWebHost(args);
DocumentCreateQueueProcessor qProcessor;
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
var config = services.GetRequiredService<IConfiguration>();
qProcessor = new DocumentCreateQueueProcessor(config.GetConnectionString("DefaultConnection"));
}
try
{
host.Run();
}
finally
{
qProcessor = null;
}
}
我的队列处理器实现了IDisposable并使用了canceltoken来取消正在运行的线程。 起初我刚刚在host.Run()之后添加了nulling但是我发现在语句上设置一个断点时,在通过在VS中按F5使用IISExpress调试项目时从未达到该断点。 我将try / finally添加到Run语句中,但仍未达到断点。
解决这个问题的正确方法是什么?我的代码是否真的没有达到,或者只是调试器在我关闭IISExpress浏览会话时卸载。