背景: ASP.NET Web应用程序管理用户,角色和用户在活动服务上花费的用户信用。网络作业会定期检查用户正在使用哪些服务,并相应地更新其信用。CreditUpdate
在更新积分时,WebJob执行的操作还应考虑UserRole。
问题:我无法从Web作业访问角色。在WebApp上,角色是由ApplicationUserManager
类管理和访问的: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()));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句