c# - 无法从根提供商解析范围服务“Updater.Service.IBridgeService”
问题描述
我正在开发 .NET Core 5 控制台应用程序,并尝试在运行应用程序时使用 DI 注入服务,但出现此错误“无法从根提供程序解析范围服务 'Updater.Service.IBridgeService'”。
如果我将 IBridgeService 从范围服务中取出,它工作正常,但我想传递 BridgeService 以便我不想创建它的对象。
线路错误
var svc = ActivatorUtilities.CreateInstance<RIUProcess>(host.Services);
代码
程序.cs
Class Program
{
static void Main(string[] args)
{
try
{
// Read, Load appsettings json
var builder = new ConfigurationBuilder();
BuildConfig(builder);
//Setup Serilog
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.ReadFrom.Configuration(builder.Build())
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File(@"Log\Log.log")
.CreateLogger();
Log.Logger.Information($"Application Running in {Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT")} mode");
var host = Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
{
services.AddLogging(configure => configure.AddSerilog());
services.AddTransient<IRIUProcess, RIUProcess>();
services.AddScoped<IBridgeService, BridgeService>();
services.AddScoped<IWarehouseService, WarehouseService>();
})
.UseSerilog()
.Build();
var svc = ActivatorUtilities.CreateInstance<RIUProcess>(host.Services);
svc.Run(args);
}
catch (Exception ex)
{
Log.Logger.Error(ex.ToString());
}
}
static void BuildConfig(IConfigurationBuilder builder)
{
builder.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT")}", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
}
}
RIUProcess.cs
public class RIUProcess : IRIUProcess
{
#region Variables
private readonly ILogger<RIUProcess> _log;
private readonly IConfiguration _config;
private readonly IBridgeService _bridgeService;
#endregion
#region RIUProcess
public RIUProcess(ILogger<RIUProcess> log, IConfiguration config, IBridgeService bridgeService)
{
this._log = log;
this._config = config;
this._bridgeService = bridgeService;
}
#endregion
public void Run(string[] args)
{
.... code
}
}
谢谢你的帮助。
解决方案
推荐阅读
- git - Git克隆错误:RPC失败 - curl 28 操作太慢
- python - 使用 ForeignKey 在 Django 中查询集过滤器()
- html - CYPRESS:检查列表中的每个项目
- docker - 尝试启动 Docker 容器时出现用户错误
- swift - 无法转换 Observable 类型的类型值
到预期的参数类型 Observable - mysql - 有没有办法通过 mysqlworkbench 更改存储过程所需的权限?
- php - 按顺序对这些变量进行排序(将单词转换为等于其长度的数字)。(使用条件)
- python - 为什么 Python 不能为我识别“kivy”模块?
- swift - 在 Combine 中链接 n 个请求
- rust - 如何通过回调管理生命周期