Hangfire FileNotFoundException:无法加载文件或程序集DynamicProxyGenAssembly, [英] Hangfire FileNotFoundException: Could not load file or assembly DynamicProxyGenAssembly,

查看:560
本文介绍了Hangfire FileNotFoundException:无法加载文件或程序集DynamicProxyGenAssembly,的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

设置后台作业后,我遇到了HangFire的问题,但是当我打开HangFire仪表板时,看到以下 exception

I am having an issue with HangFire after i set a background job it get set but when i open the HangFire dashboard i see the following exception

System.IO.FileNotFoundException:无法加载文件或程序集 'DynamicProxyGenAssembly2,版本= 0.0.0.0,文化=中性, PublicKeyToken = null"或其依赖项之一.系统无法 找到指定的文件.

System.IO.FileNotFoundException: Could not load file or assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

所有接口都使用AutoFac for DI注册. ,我在startup.cs中设置了以下内容

All interfaces are being registered using AutoFac for DI. , I am setting up the following in the startup.cs

我在启动时有以下代码

  GlobalConfiguration.Configuration.UseSqlServerStorage("Hangfire");
  app.UseHangfireDashboard();
  app.UseHangfireServer();

我有以下任务来安排工作

I have the following ocde to schule the job

 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);
      }
    }

推荐答案

我也有同样的问题.但是我尝试将包含BackgroundJob.Enqueue的方法移至vm类.当我想调用此方法时,我将新建一个vm类.然后使用vm调用该方法.这将是成功的.我认为原因是两个对象同时使用某些资源.无论如何它都可以运行.希望对您有所帮助.

I also have same issue. But I try to move the method which contains BackgroundJob.Enqueue to a vm class. When I want to call this method I will new a vm class. Then use vm to call the method. It will be a success. I think the reason is some resource is used by two object at the same time. Anyway it can run. I hope this can help you.

我的例外如下:

warn: Hangfire.AutomaticRetryAttribute[0]
  Failed to process the job '15': an exception occurred. Retry attempt 3 of 10 will be performed in 00:01:01.
`System.IO.FileNotFoundException: 未能加载文件或程序集"DynamicProxyGenAssembly2,     Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"或它的某一个依赖项。系统找不到指定的文件。
文件名:"DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
   在 System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
   在 System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
   在 System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
   在 Hangfire.Storage.InvocationData.Deserialize()

=== 预绑定状态信息 ===
日志: DisplayName = DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
日志: Appbase = file:///D:/Code/Test/bin/Debug/net461/
日志: 初始 PrivatePath = NULL
调用程序集: Hangfire.Core, Version=1.6.19.0, Culture=neutral, PublicKeyToken=null。`
===
日志: 此绑定从 default 加载上下文开始。
日志: 正在使用应用程序配置文件: D:\Code\Test\bin\Debug\net461\ Test.exe.Config
日志: 使用主机配置文件:
日志: 使用 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config 的计算机配置文件。
日志: 此时没有为引用应用策略(私有、自定义、分部或基于位置的程序集绑定)。
日志: 相同的绑定已出现过,因 hr = 0x80070002 而失败。

这篇关于Hangfire FileNotFoundException:无法加载文件或程序集DynamicProxyGenAssembly,的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆