C# ASP.NET MVC会话变量不工作-保持为空

C# ASP.NET MVC会话变量不工作-保持为空,c#,asp.net-mvc,session,session-variables,session-cookies,C#,Asp.net Mvc,Session,Session Variables,Session Cookies,我试图在会话变量中存储“Person”类型的对象。会话变量的存储方式如下: public void SelectPerson(int ID) { Person person = db.People.Where(p => p.ID == ID).FirstOrDefault(); Session["PersonID"] = ID; Session["Person"] = person; } 然后我尝试在以后使用这个s

我试图在会话变量中存储“Person”类型的对象。会话变量的存储方式如下:

    public void SelectPerson(int ID)
    {
        Person person = db.People.Where(p => p.ID == ID).FirstOrDefault();

        Session["PersonID"] = ID;
        Session["Person"] = person;
    }
然后我尝试在以后使用这个session变量,但它总是返回为null

Person person = (Person) Session["Person"];

我不知道这为什么不起作用。有人有什么想法吗?谢谢您的帮助。

请检查您从此行中获得的值:Person-Person=db.People.Wherep=>p.ID==ID.FirstOrDefault

试着写:

回复:Writeperson


在您尝试了我在这里写的内容之后,请告诉我它写入的值。

根据Person类的实现,可能转换失败,因此返回的数据为空。您的配置中是否启用了会话?@Bardo您能详细说明一下吗?存储ID的会话变量是一个测试,即使ID有一个值,会话变量仍然为空。@这就是我认为可能存在的问题-我不确定这意味着什么,或者我将如何做。1.有会话工作吗?2.如果是这样,数据库是否会在上面的代码中返回一个值?这个值将写入到什么地方?而不是response.write,只需运行调试器,看看结果是什么。@JamesLloyd他在上面给出了另一个选项。我们只是想看看你从这个人身上得到了什么价值。您还可以创建一个简单的标签并将其文本设置为person value.person={System.Data.Entity.DynamicProxies.person_A20668C6E1C5A1661A623D9EEC075B8966915E87A24FF6D35AF50E7B06A69}代理创建似乎已启用。尝试在配置中禁用它,然后尝试这个var person=Session[person];检查是否存在任何铸造错误。