if (Session["user_name_gly"] == null)
            {
                string script = " <script language='javascript'>window.open('login.aspx');" +
                  "window.parent.opener = null;window.parent.open('','_self');window.parent.close(); window.close(); </script>";
                Response.Write(script);
}以上代码执行没问题
=============================
如果改成以下代码,即
if (Session["user_name_gly"] == null)
            {
                string script = " <script language='javascript'>window.open('login.aspx');" +
                  "window.parent.opener = null;window.parent.open('','_self');window.parent.close(); window.close(); </script>";
                Response.Write(script);
}
Label1.Text = Session["user_name_gly"].ToString();会提示:Session["user_name_gly"].ToString()未将对象引用到实例。为什么?

解决方案 »

  1.   

    如果改成这样:
    if (Session["user_name_gly"] == null)
    {
       Response.Redirect("login.aspx");
    }
    Label1.Text = Session["user_name_gly"].ToString();
    ===========================
    是能正常执行的,即判断Session["user_name_gly"] == null后就跳转到login.aspx页面了,
    即不往下执行了。
      

  2.   

    string script = " <script language='javascript'>window.open('login.aspx');" +
                      "window.parent.opener = null;window.parent.open('','_self');window.parent.close(); window.close(); </script>";
                    Response.Write(script);
    =================
    为什么这个代码也是同样地
    判断Session["user_name_gly"] == null后就执行关闭页面,并跳转到login.aspx页面,
    但它为什么还会继续往下执行呢?请教高手指点一二。
      

  3.   


    怎么可能,这里根本就没有判断session的语句,你是不是没有刷新!
      

  4.   

    放到else{}里面去页面得载完 dom元素
      

  5.   

    Response.Write是输出,有没有跳转,肯定会继续向下执行的。
      

  6.   

    因为javascript脚本和C#代码执行周期不一样C#代码是在服务器端执行的,js脚本是在客户端执行的因此在页面中写入js代码不会立刻执行,要等页面全部加载完毕并发送到客户端才会执行你这段代码把js脚本写到页面中,但并没有立即执行,代码继续执行到Session.ToString()就会报错你在1楼的回复中用C#代码说明页面跳转,那么后面的ToString就不会执行了
      

  7.   

    Session["user_name_gly"]是null。需要先判断空值
      

  8.   

    if (Session["user_name_gly"] == null)
    {
    string script = " <script language='javascript'>window.open('login.aspx');" +
                      "window.parent.opener = null;window.parent.open('','_self');window.parent.close(); window.close(); </script>";
                    Response.Write(script);  Response.Redirect("login.aspx");
    }
    =====================
    等等我试试这个如何。
      

  9.   

    服务端是执行完了才会把所有的结果返回给你
    而js是在客户端,可以边执行边返回结果if (Session["user_name_gly"] == null)
                {
                    string script = " <script language='javascript'>window.open('login.aspx');" +
                      "window.parent.opener = null;window.parent.open('','_self');window.parent.close(); window.close(); </script>";
                    Response.Write(script);
    }
    else
    {
    Label1.Text = Session["user_name_gly"].ToString();}
    加个else就好了啊
      

  10.   


    if (Session["user_name_gly"] == null)
                {
                    string script = " <script language='javascript'>window.open('login.aspx');" +
                      "window.parent.opener = null;window.parent.open('','_self');window.parent.close(); window.close(); </script>";
                    Response.Write(script);
    return;
    }
    Label1.Text = Session["user_name_gly"].ToString();
    加上个ruturn,试试。
      

  11.   

    =================
    这个我也知道的,但目前我的这个是封装起来的,
    public static void CheckSession(Page page, string SessionName)
            {
                if (HttpContext.Current.Session[SessionName] == null)
                {
                    string script = " <script language='javascript'>window.open('ad0_login.aspx');" +
                     "window.parent.opener = null;window.parent.open('','_self');window.parent.close(); window.close(); </script>";
                    page.ClientScript.RegisterClientScriptBlock(page.GetType(), "CloseWindow", script);
                }
            }
    -----------
    protected void Page_Load(object sender, EventArgs e)
            {
                comms.CheckSession(this.Page, "user_name_gly");
                Label1.Text = Session["user_name_gly"].ToString();
                //接下来有很大需要处理的}
    ==============
    不知怎么加在else里面?
      

  12.   

    page.ClientScript.RegisterClientScriptBlock(page.GetType(), "CloseWindow", script);
    在这个后面加一个Response.End();不就OK了吗
      

  13.   

    1:你那方法返回bool类型
    2:像ls说的,Response.End()直接停止该页执行,引发EndRequest
    3:Label1.Text = Session["user_name_gly"]==null?"":Session["user_name_gly"].ToString();
      

  14.   

    if (Session["user_name_gly"] == null)
                {
                    string script = " <script language='javascript'>window.open('login.aspx');" +
                      "window.parent.opener = null;window.parent.open('','_self');window.parent.close(); window.close(); </script>";
                    Response.Write(script);
    }
    Label1.Text = Session["user_name_gly"].ToString();
    ------
    你输出的是客户端脚本啊,执行肯定在c#代码之后
    既然了Session["user_name_gly"] == null
    那 Session["user_name_gly"].ToString();肯定要出错了
      

  15.   

    我知道为什么'login.aspx' 看这个名字就知道了
      

  16.   

    Session是空的 ,先走方法,但是没return,他还是会走完的。