问题
I was trying to set a property in the constructor af a controller like this:
public ApplicationUserManager UserManager { get; private set; }
public AccountController()
{
UserManager = HttpContext.GetOwinContext().Get<ApplicationUserManager>("");
}
But as explained here:
https://stackoverflow.com/a/3432733/1204249
The HttpContext is not available in the constructor.
So how can I set the property so that I can access it in every Actions of the Controller?
回答1:
You can move the code into a read-only property on your controller (or a base controller if you need it available across your entire application):
public class AccountController : Controller {
private ApplicationUserManager userManager;
public ApplicationUserManager UserManager {
if (userManager == null) {
//Only instantiate the object once per request
userManager = HttpContext.GetOwinContext().Get<ApplicationUserManager>("");
}
return userManager;
}
}
来源:https://stackoverflow.com/questions/24342887/using-httpcontext-in-controller-constructor