Asp.net 在中使用会话变量来挂起定期作业

Asp.net 在中使用会话变量来挂起定期作业,asp.net,hangfire,Asp.net,Hangfire,我已将hangfire集成到Asp.net web应用程序中,并尝试将会话变量用于hangfire重复作业,如下所示: public class Startup { public void Configuration(IAppBuilder app) { HangfireSyncServices objSync = new HangfireSyncServices(); var options = new DashboardOptions

我已将hangfire集成到Asp.net web应用程序中,并尝试将会话变量用于hangfire重复作业,如下所示:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        HangfireSyncServices objSync = new HangfireSyncServices();

        var options = new DashboardOptions
        {
            Authorization = new[] { new CustomAuthorizationFilter() }
        };
        app.UseHangfireDashboard("/hangfire", options);

        app.UseHangfireServer();

        //Recurring Job
        RecurringJob.AddOrUpdate("ADDRESS_SYNC", () => objSync.ADDRESS_SYNC(), Cron.MinuteInterval(30));

    }
}
我的“HangfireSyncServices”课程如下:

public partial class HangfireSyncServices : APIPageClass
{
    public void ADDRESS_SYNC()
    {
        string userName = Convert.ToString(Session[Constants.Sessions.LoggedInUser]).ToUpper();
                //Exception throwing on above statement..
        //........Rest code.......
    }
}

public abstract class APIPageClass : System.Web.UI.Page
{
    //common property & methods...
}
但在获取“userName”的值时,我得到的运行时异常如下所示: 只有在配置文件或Page指令中将enableSessionState设置为true时,才能使用会话状态。还请确保System.Web.SessionStateModel或自定义会话状态模块包含在 应用程序配置中的

我也曾尝试使用此解决方案和其他解决方案解决上述错误,但尚未解决。谁能在这个问题上帮助我

提前感谢,

Hiren

Hangfire作业与asp.net在不同的上下文中运行,它有自己的线程池。事实上,如果Hangfire池中有多台服务器,则Hangfire作业甚至可能在不同于排队作业的服务器上执行

要从作业中访问的任何数据都需要作为方法参数传入。例如:

public partial class HangfireSyncServices //: APIPageClass <- you can't do this..
{
    public void ADDRESS_SYNC(string userName)
    {
        //........Rest code.......
    }
}

string userName = Convert.ToString(Session[Constants.Sessions.LoggedInUser]).ToUpper();
RecurringJob.AddOrUpdate("ADDRESS_SYNC", () => objSync.ADDRESS_SYNC(userName), Cron.MinuteInterval(30));

public分部类HangfireSyncServices//:APIPageClass,它无法解释您希望在Hangfire作业中使用会话状态。Hangfire作业的全部要点是它们在后台运行。因此,它们不会与会话绑定。你需要重新思考架构。