ASP.Net MVC 3控制器继承

时间:2012-02-21 22:28:26

标签: asp.net-mvc

我的ASP.net MVC 3应用程序中有以下继承层次结构:

  public class HomeController : AuthenticatedBaseController
{

    public ActionResult Index()
    {
        return View();
    }
}   


public class AuthenticatedBaseController : BaseController
{
    public AuthenticatedBaseController() 
    {
        if (!this.UserToken.IsAuthenticated)
        {
            RedirectToAction("Login", "Login");
        }
    }

}

public class BaseController : Controller
{

    private Token _token;
    public Token UserToken
    {
        get
        {
            _token = (Token)(Session["token"]);
            if (_token == null)
            {
                SetToken();
            }
            return _token;
        }
    }

    public void SetToken()
    {
        _token = new Token(Session.SessionID, Request.Url.Host, Request.Url.ToString());
        Session["token"] = _token;
    }
}

当我向/ Home发出GET请求时,我发现AuthenticatedBaseController的构造函数正在触发两次。有人可以帮我告诉我我做错了吗?

1 个答案:

答案 0 :(得分:1)

要回答你的问题,它会触发两次因为你将用户重定向到另一个动作,这会导致另一个请求,这会导致另一个控制器实例被创建。