ASP.NET MVC无法读取cookie

Lee*_*Lee 0 cookies asp.net-mvc

这应该很简单,虽然我发现我只能设置cookie但不能读回来,尽管我的浏览器向我显示了cookie.

在我HomeController用户输入有效字符串后设置cookie:

[HttpPost]
public ActionResult Index(string fMemberCode)
{
    try
    {
        // TODO: controller-->member table module-->member data gateway-->DB
        // Check member num against member table
        //  Return cookie if exists
        //  Return error if not
        MembersModule membersModule = new MembersModule();
        int memberId = membersModule.AuthMember(fMemberCode);
        if (memberId > 0)
        {
            HttpCookie mCookie = new HttpCookie("MMedia");
            mCookie.Value = memberId.ToString();
            Response.Cookies.Add(mCookie);
        }
        else { }
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在不同的上下文中,LibraryController需要检查cookie:

public LibraryController()
{
    // TODO
    // Check member cookie present
    int id = int.Parse(Request.Cookies["Media"].Value);
    if (id > 0)
        this.module = new LibraryModule(id);
    else throw new Exception("Invalid cookie");
}
Run Code Online (Sandbox Code Playgroud)

但是,当执行LibraryController到达时,执行VS2012中的代码时:

int id = int.Parse(Request.Cookies["Media"].Value);
Run Code Online (Sandbox Code Playgroud)

抛出异常: Object reference not set to an instance of an object

Dan*_*ite 6

您无法Request在控制器的构造函数中访问该属性.它在控制器生命周期中的那个点上不存在.

动作或控制器过滤器可能对您有所帮助.