代码之家  ›  专栏  ›  技术社区  ›  SilverLight

我无法在页面加载中使用会话,出现以下错误

  •  1
  • SilverLight  · 技术社区  · 14 年前

    为什么我会犯这个错误:

    对象引用未设置为 对象的实例。

    当我把这个代码放进我的页面加载时:

    protected void Page_Load(object sender, EventArgs e)
    {
         BackEndUtils.OverallLoader();
    
         string Teststr = Session["Co_ID"].ToString();
    }
    

    ==========================================================================

    此会话在用户登录到我的网站时进行,并且此会话在其他区域工作…

    谢谢你的关注

    ==========================================================================

    谢谢你的回答

    我删除 BackEndUtils.OverallLoader(); 但错误依然存在

    我试过 Teststr = Convert.ToString(Session["Co_ID"]); 错误消失了-但我不知道为什么那个会话是空的

    在其他领域,会话工作得很好

    怎么了?

    我的网页标记如下:

    <%@ Page Title="" Language="C#" MasterPageFile="~/Admin/AdminBackend.Master" AutoEventWireup="true" CodeBehind="Personel.aspx.cs" Inherits="Darman.Admin.Personel" Theme="DefaultTheme" %>
    

    =================================================================================

    我把这个代码放在一个这样的按钮上:

    string Teststr = Convert.ToString(Session["Co_ID"]);
    

    当我按那个按钮时,页面加载(回发)中的代码+按钮中的代码单击工作正常,并显示23(我的公司ID)

    但当我在浏览器中运行我的页面时(第一次),page load中的代码显示为空。

    为什么?

    谢谢

    5 回复  |  直到 11 年前
        1
  •  1
  •   Marc Gravell    14 年前

    你可以试试:

    Teststr = Convert.ToString(Session["Co_ID"]);
    

    会处理的 null 同时检查:是否已禁用该页的会话状态?

    <%@ Page language="c#" ... EnableSessionState="false" %>
    

    (尽管在这种情况下,我可能会预料到更明显的错误)

        2
  •  1
  •   Hun1Ahpu    14 年前

    可能“co_id”会话参数不存在。检查时间:

    if (Session["Co_ID"] != null) 
     {
       Teststr = Session["Co_ID"].ToString();
     }
    
        3
  •  1
  •   Tom van der Woerdt    13 年前

    你也许应该看到这个错误。错误说 .ToString() 不适用于对象,而且,您不需要编写 toSTRIN() 在这里。如果没有它,它将工作,如下所示

    protected void Page_Load(object sender, EventArgs e)
    {
        BackEndUtils.OverallLoader();
    
        string Teststr = Session["Co_ID"].ToString();
    }
    
        4
  •  0
  •   Jørn Schou-Rode dscher    14 年前

    在以下两种情况下都可能引发异常:

    1. 身体里的东西 BackEndUtils.OverallLoader() 引发异常。
    2. 不管什么原因 Session["Co_ID"] 为空,并调用 ToString() on null失败。

    使用异常提供的堆栈跟踪来确定哪个是正确的。如果是1,我们就必须找出这种方法的根源,以便进一步排除故障。如果2,您可能需要在代码中的该行周围执行一些手动更正(您可能无论如何都希望这样做):

    object id = Session["Co_ID"];
    if (id == null)
    {
        id = Session["Co_ID"] = LoadCoIdFromSomewhere();
    }
    
    string Teststr = id.ToString();
    
        5
  •  0
  •   Oded    14 年前

    错误可能来自 BackEndUtils.OverallLoader .

    至于session变量-如果有人来到这个页面 没有 登录时,将不会设置。会话也可能已超时,并且 "Co_ID" 不再设置。