C# hangfire是否将参数转换为json(序列化)?

C# hangfire是否将参数转换为json(序列化)?,c#,asp.net-mvc,hangfire,C#,Asp.net Mvc,Hangfire,当我登录时,程序会创建一个InstaSharper实例(名为:IInstaApi),其中包含httpclient,HttpClientHandler 当我用这个的时候 AddFollower adf = new AddFollower(); RecurringJob.AddOrUpdate("addfollow", () => adf.AddFollowerState(2,IInstaApi), "*/10 * * * *", TimeZoneInfo.Local, "defaul

当我登录时,程序会创建一个InstaSharper实例(名为:
IInstaApi
),其中包含
httpclient
HttpClientHandler

当我用这个的时候

  AddFollower adf = new AddFollower();
  RecurringJob.AddOrUpdate("addfollow", () => adf.AddFollowerState(2,IInstaApi), "*/10 * * * *", TimeZoneInfo.Local, "default");
Hangfire将这些值发送到创建作业时,Hangfire会序列化它们(在反序列化后销毁我的对象,不再销毁我的对象) 我应该怎么做才能使我在Hangfire中使用的方法只有两个参数,一个是int,另一个是InstaApi


我该怎么办?文件中说我应该使用IOC,但我不知道如何使用它

你需要使你的定期工作静态可用并且完全独立于上下文。
只需创建一个静态方法,该方法将包含整个逻辑并完成所有工作:

  public class AddFollowerJob
  {
      public static void Run() 
      { 
          AddFollower adf = new AddFollower();
          // do whatever you want here with adf
          // initialize API here
          adf.AddFollowerState(2, IInstaApi); 
          // handle results here
      }
  }

  RecurringJob.AddOrUpdate("addfollow", () => AddFollowerJob.Run(), "*/10 * * * *", TimeZoneInfo.Local, "default");
其主要思想是Hangfire将您的方法调用表达式序列化到数据库中,并且它必须与上下文无关,以便任何服务器(甚至远程服务器)都可以运行此代码


使用IoC容器不在代码中存储这些依赖项是一个好主意,但这不是必需的。只需确保传递给Hangfire的方法是自给自足和独立的。

httoclient?。。。不是httpClient?为什么用autofac和ninject标记?请不要垃圾邮件标签。因为它可以解决与autofac和ninject(国际奥委会)你只会使用一个或另一个。不是两者都有。适当地标记你的问题。现在还不清楚这两个库与这个问题的关系。我如何才能将这些参数发送到run()方法?@ShoppingCenterCNC您不需要这样做。在
Run
方法中初始化这些参数。不,应该由作业发送。我不能这样做。我想我应该更改不序列化参数值的hangfire代码anymore@ShoppingCenterCNC为什么会这样?你能展示一下用例吗。2是一个id;我写了2个例子