Asp.net 在中使用会话变量来挂起定期作业
我已将hangfire集成到Asp.net web应用程序中,并尝试将会话变量用于hangfire重复作业,如下所示: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
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或自定义会话状态模块包含在
应用程序配置中的
我也曾尝试使用此解决方案和其他解决方案解决上述错误,但尚未解决。谁能在这个问题上帮助我
提前感谢,HirenHangfire作业与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作业的全部要点是它们在后台运行。因此,它们不会与会话绑定。你需要重新思考架构。