问题描述
我正在设置.Net核心工作程序服务,该服务将从数据库中获取一些数据并将其传递给端点。因此,我试图根据我的.net MVC知识对其进行设置。设置时,出现此错误
未处理的异常。 System.ArgumentNullException:值不能为 空值。 (参数“ implementationInstance”)位于 Microsoft.Extensions.DependencyInjection.ServiceCollectionServiceExtensions.AddSingleton [TService](IServiceCollection 服务,TService实现实例
我创建了一个类,其中的逻辑用于从存储过程中获取数据。这是商务电话
namespace AgencyBankingSettlement.Business
{
public class ServiceTask
{
private readonly AgencyBankingSettlementDbContext context;
public ServiceTask(AgencyBankingSettlementDbContext _context)
{
context = _context;
}
public IEnumerable<Testing> Request() {
var person = context.Testings.FromSqlRaw<Testing>("dbo.spPerson_GetAll");
return person;
}
}
}
这是我的program.cs。在program.cs文件中,我设置了依赖项注入,以便可以轻松地将其注入我的类中。
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext,services) =>
{
IConfiguration configuration = hostContext.Configuration;
AppSettings appSettings = configuration.GetSection("ContextCore").Get<AppSettings>();
services.AddSingleton(appSettings);
services.AddScoped<ServiceTask>();
services.AddDbContext<AgencyBankingSettlementDbContext>(options =>
options.UseSqlServer(hostContext.Configuration.GetConnectionString("DefaultConnection")));
services.AddHostedService<Worker>();
});
}
所以在我的worker.cs中。我希望能够访问ServiceTask文件并记录将从serviceTask注入的“人员”信息。我也无法访问该文件。如果我可以解决此问题,那么我想做的所有其他事情也将遵循相同的模式。
public class Worker : BackgroundService
{
private readonly ServiceTask serviceTask;
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger,ServiceTask _serviceTask)
{
serviceTask = _serviceTask;
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
var persons = serviceTask.Request();
_logger.LogInformation(persons);
_logger.LogInformation("Worker running at: {time}",DateTimeOffset.Now);
await Task.Delay(1000,stoppingToken);
}
}
}
How can I make this to work?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)