在控制器构造函数中使用HttpContext

时间:2014-06-21 15:05:13

标签: asp.net-mvc asp.net-identity-2

我试图在构造函数中设置一个像这样的控制器的属性:

public ApplicationUserManager UserManager { get; private set; }
public AccountController()
    {
        UserManager = HttpContext.GetOwinContext().Get<ApplicationUserManager>("");
    }

但正如这里所解释的那样:

https://stackoverflow.com/a/3432733/1204249

构造函数中没有HttpContext。

那么如何设置属性以便我可以在Controller的每个Actions中访问它?

1 个答案:

答案 0 :(得分:3)

您可以将代码移动到控制器上的只读属性(如果您需要在整个应用程序中使用它,则可以将其移动到基本控制器):

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;
    }
}