我无法在Page_Load中使用Session,我在下面收到错误

时间:2010-04-05 08:18:35

标签: c# asp.net session visual-studio-2008-sp1 pageload

为什么我收到此错误:

  

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

当我把这段代码放在我的page_load中时:

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"]);

当我按下那个按钮时,这个代码在页面加载(POSTBACK)+ IN Button_Click工作正常并显示23(我的Co_ID)

但是当我在浏览器中运行我的页面时(第一次),页面加载中的这段代码显示为null。

为什么?

非常感谢

5 个答案:

答案 0 :(得分:1)

可能“Co_ID”会话参数不存在。检查之前:

if (Session["Co_ID"] != null) 
 {
   Teststr = Session["Co_ID"].ToString();
 }

答案 1 :(得分:1)

你可以尝试:

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

将处理null s;还要检查:您是否已为该页面禁用会话状态?

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

(虽然在这种情况下我或许会想到一个更明显的错误)

答案 2 :(得分:1)

您应该看到错误。错误说.ToString()不适用于对象,而且您不需要在此处编写.ToString()。它将在没有它的情况下工作,如下所示

protected void Page_Load(object sender, EventArgs e)
{
    BackEndUtils.OverallLoader();

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

答案 3 :(得分:0)

可以在以下两个条件之一中引发异常:

  1. BackEndUtils.OverallLoader()正文中的某些内容引发了异常。
  2. 无论出于何种原因,Session["Co_ID"]为空,并且在null上调用ToString()失败。
  3. 使用异常提供的堆栈跟踪来确定哪一个是正确的。如果它是#1,我们将不得不看到该方法的来源进一步解决问题。如果是#2,您可能需要在代码中围绕该行进行一些手动修正(无论如何您可能想要这样做):

    object id = Session["Co_ID"];
    if (id == null)
    {
        id = Session["Co_ID"] = LoadCoIdFromSomewhere();
    }
    
    string Teststr = id.ToString();
    

答案 4 :(得分:0)

错误可能来自您的BackEndUtils.OverallLoader

至于会话变量 - 如果有人来到此页而没有登录,则不会设置它。会话可能也已超时,"Co_ID"不再设置。