У меня есть проект WebApi, и это мой регистрационный код зависимости:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDatabaseContext>(opt=> opt.UseSqlServer(Configuration.GetConnectionString("conStr")));
services.RegisterEasyNetQ("host=localhost;username=admin;password=admin");
services.AddTransient(typeof(CreateOrderHandler));
services.AddTransient(typeof(OrderFinishedHandler));
services.AddTransient(typeof(OrderPaidHandler));
services.AddControllers();
}
, и я разрешаю запуск этих служб сразу после запуска проекта с помощью этого кода:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
app.ApplicationServices.GetService(typeof(CreateOrderHandler));
app.ApplicationServices.GetService(typeof(OrderPaidHandler));
app.ApplicationServices.GetService(typeof(OrderFinishedHandler));
}
этого кода работает правильно, когда я запускаю свой проект по команде do tnet, но когда я отлаживаю свой код в райдере, я получаю следующее исключение:
System.InvalidOperationException: Cannotize ' ApiProject.Order.CreateOrderHandler 'от root провайдера, поскольку для него требуется служба с областью действия' ApiProject.Order.MyDatabaseContext '.