我在设置后台作业后遇到了HangFire问题,但当我打开HangFire Jmeter 板时,我看到以下异常
System.IO.FileNotFoundException:未能加载文件或程序集“DynamicProxyGenAssembly2,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”或它的某个依赖项。系统找不到指定的文件。
正在使用AutoFac for DI注册所有接口。我正在startup.cs中设置以下内容
我在启动中有以下代码
GlobalConfiguration.Configuration.UseSqlServerStorage("Hangfire");
app.UseHangfireDashboard();
app.UseHangfireServer();
我有以下几点来学习这份工作
public class ScheduleAppService : IScheduleAppService
{
private readonly IRunCommandAppService _runCommandAppService;
public ScheduleAppService(IRepository<Schedule> repository, IAdHocTemplateRunnerAppService adHocTemplateRunner) : base(repository)
{
_adHocTemplateRunner = adHocTemplateRunner;
}
public async Task CreateSchedule(ScheduleDto schedule)
{
input.Schedule.JobId = BackgroundJob.Schedule(
() => _runCommandAppService.AddTemplate(
new Template{ RunId = Guid.NewGuid().ToString(), TemplateId = schedule.Id }), schedule.Start);
}
}
被调用的代码在这里
public class RunCommandAppService : IRunCommandAppService
{
private readonly IRepository<Template> _templateRepo;
public RunCommandAppService (IRepository<Template> templateRepo)
{
_templateRepo = templateRepo;
}
public void AddTemplate(Template input)
{
try
{
Run(input);
}
finally
{
SetRunComplate(input.RunId);
}
}
3条答案
按热度按时间jdzmm42g1#
可能与您的上下文不同,但我认为仍然值得在此添加:
-Hangfire服务器作为Windows服务运行;
**解决方案:**添加了对缺少的程序集的引用(即:“DynamicProxyGenAssembly2”)。
@reggieboyYEAH报告了相同的问题,并以相同的方式解决了该问题。
详细信息:https://github.com/HangfireIO/Hangfire/issues/558
busg9geu2#
我也有同样的问题。但是我试着把包含
BackgroundJob.Enqueue
的方法移到一个vm类中。当我想调用这个方法的时候,我会新建一个vm类。然后用vm来调用这个方法。它会成功的。我想原因是一些资源被两个对象同时使用。不管怎样,它可以运行。我希望这能帮助你。我的例外如下:
3mpgtkmj3#