相关疑难解决方法(0)

Hangfire依赖注入生命周期范围

我正在重写整个问题因为我意识到原因,但仍然需要一个解决方案:

我在Hangfire中有一个经常性的工作,每分钟运行并检查数据库,可能更新一些东西,然后退出.

我将dbcontext注入包含job方法的类中.我注册这个dbcontext以使用以下注入

builder.RegisterType<ApplicationDbContext>().As<ApplicationDbContext>().InstancePerLifetimeScope();
Run Code Online (Sandbox Code Playgroud)

但是,每次作业运行时,Hangfire似乎都不会创建单独的生命周期范围,因为构造函数只会被调用一次,尽管每分钟调用一次作业方法.

这给我带来了问题.如果用户更新了数据库中的某些值(dbcontext被注入其他地方并用于更新值),则仍在使用的上下文Hangfire开始返回已更改的过时值.

c# autofac hangfire

19
推荐指数
2
解决办法
1万
查看次数

Hangfire.Autofac与MVC应用程序 - 注入失败

我正在尝试创建一个简单的Hangfire测试,但它无法正常工作.这是所有重要的代码,以及我如何使用Hangire.Autofac配置它.不知道我在这里缺少什么.我在/ hangfire dashbaord中获得的例外也在下面.

public class AmazonSqsService : IAmazonSqsService
{
    private readonly IBackgroundJobClient _backgroundJobClient;
    private readonly ILogService _logService;

    public AmazonSqsService(IBackgroundJobClient backgroundJobClient, ILogService logService) 
    {

        _backgroundJobClient. = backgroundJobClient;
        _logService= logService;
    }

    public async Task<string> Test()
    {

        return _backgroundJobClient.Enqueue(() => Looper());

    }

    public void Looper() {
        while (true) { _logService.Info("In Looper Loop"); Thread.Sleep(5000); } 
    } 
}

 public partial class Startup
{
    public static IContainer ConfigureContainer()
    {
        var builder = new ContainerBuilder();
        RegisterApplicationComponents(builder);
        AppGlobal.Container = builder.Build();
    }

    public static void RegisterApplicationComponents(ContainerBuilder builder)
    {
        builder.RegisterType<LogService>().As<ILogService>().InstancePerLifetimeScope(); …
Run Code Online (Sandbox Code Playgroud)

c# hangfire

12
推荐指数
1
解决办法
3510
查看次数

标签 统计

c# ×2

hangfire ×2

autofac ×1