与 ASP.NET Web 应用程序关联的 Azure WebJob 无法从 WebJob 访问用户角色

Azure WebJob associated with ASP.NET web application cannot access user role from WebJob

背景: ASP.NET Web 应用程序管理用户、角色和用户花费在其活动服务上的用户信用。网络作业定期检查用户正在使用哪些服务并相应地更新他们的信用。 WebJob 执行的 CreditUpdate 操作在更新学分时还应考虑 UserRole。

问题:我无法从网络作业访问角色。在 WebApp 上,角色由 ApplicationUserManager class: UserManager.GetRoles(user.Id) 管理和访问。问题是 WebJob 确实无法访问 UserManager HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>() 而且我也不知道如何从 WebJob 创建新实例。

简而言之。可以访问身份数据库并拥有 ApplicationUser 的实例。我有什么想法可以访问与之关联的用户角色吗?

这是我的 webjob 的代码,希望对您有所帮助。文件是 Functions.cs

// This function will be triggered based on the schedule you have set for this WebJob
// This function will enqueue a message on an Azure Queue called queue
[NoAutomaticTrigger]
public static void ManualTrigger(TextWriter log, int value, [Queue("queue")] out string message)
{
    var db = new ApplicationDbContext();
    var users = db.Users.ToList();
    foreach (var user in users)
    {
        //I would like to check user role first
        //if (user.IsInRole("canruletheworld")) {}
        user.updateCredit();
    }

    log.WriteLine("Function is invoked with value={0}", value);
    message = value.ToString();
    log.WriteLine("Following message will be written on the Queue={0}", message);
}

只需构造一个 UserManager 的本地实例:

var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));