none
继承PAGE的问题 RRS feed

  • 问题

  • 很简单的权限继承体系,

      public class BasePage : System.Web.UI.Page
        {

      protected override void OnPreInit(EventArgs e)
            {
       //没有登陆
                if (Session["UserInfo"] == null)
                {
               Response.Redirect("Login.aspx", true); -- 当去掉这一句时B页面就不会出现阻塞状态.

    }

      base.OnPreInit(e);

    }

     

    上面的代码我就不重复什么意思了,   我现在将奇怪现像描述一次,

    当在Login.aspx 里面,给Session赋值并登陆进来以后,  在Default.aspx页面中, 只有两个超链接,

     <a href="A.aspx" target="_blank">A</a>

     <a href="B.aspx" target="_blank">B</a>

     当打开A页面并点击查询,  A页面的查询大约需要10分钟左右(大家不要问为什么要查这么久),

    在查询的同时再打开B页面时, B页面一直打不开, 一直是阻塞状态, 但B页面是一个空页面, 没有操作,

    但是将BasePage类的  "  Response.Redirect("Login.aspx", true); " 这一句给注解

    的时候, B页面就不会有阻塞状态, 

    大家帮帮忙解答一下.  


    学习者
    2010年1月12日 12:12

全部回复

  • 很简单的权限继承体系,

      public class BasePage : System.Web.UI.Page
        {

      protected override void OnPreInit(EventArgs e)
            {
       //没有登陆
                if (Session["UserInfo"] == null)
                {
               Response.Redirect("Login.aspx", true); -- 当去掉这一句时B页面就不会出现阻塞状态.

    }

      base.OnPreInit(e);

    }

     

    上面的代码我就不重复什么意思了,   我现在将奇怪现像描述一次,

    当在Login.aspx 里面,给Session赋值并登陆进来以后,  在Default.aspx页面中, 只有两个超链接,

     <a href="A.aspx" target="_blank">A</a>

     <a href="B.aspx" target="_blank">B</a>

     当打开A页面并点击查询,  A页面的查询大约需要10分钟左右(大家不要问为什么要查这么久),

    在查询的同时再打开B页面时, B页面一直打不开, 一直是阻塞状态, 但B页面是一个空页面, 没有操作,

    但是将BasePage类的  "  Response.Redirect("Login.aspx", true); " 这一句给注解的时候, B页面就不会有阻塞状态, 

    大家帮帮忙解答一下.  


    学习者
    2010年1月12日 12:11
  • 很简单的权限继承体系,

      public class BasePage : System.Web.UI.Page
        {

      protected override void OnPreInit(EventArgs e)
            {
       //没有登陆
                if (Session["UserInfo"] == null)
                {
               Response.Redirect("Login.aspx", true); -- 当去掉这一句时B页面就不会出现阻塞状态.

    }

      base.OnPreInit(e);

    }

     

    上面的代码我就不重复什么意思了,   我现在将奇怪现像描述一次,

    当在Login.aspx 里面,给Session赋值并登陆进来以后,  在Default.aspx页面中, 只有两个超链接,

     <a href="A.aspx" target="_blank">A</a>

     <a href="B.aspx" target="_blank">B</a>

     当打开A页面并点击查询,  A页面的查询大约需要10分钟左右(大家不要问为什么要查这么久),

    在查询的同时再打开B页面时, B页面一直打不开, 一直是阻塞状态, 但B页面是一个空页面, 没有操作,

    但是将BasePage类的  "  Response.Redirect("Login.aspx", true); " 这一句给注解

    的时候, B页面就不会有阻塞状态, 

    大家帮帮忙解答一下.  


    学习者
    2010年1月12日 12:12
  • Response.Redirect("Login.aspx", true);的意思是转向并继续执行下面的代码。如果要转向,直接Response.Redirect("Login.aspx");或者Response.Redirect("Login.aspx", false);
    因为asp.net只有一个进程在工作,所以后面的请求只能排队。

    这就是导致这种现象的原因。

    【孟子E章】
    2010年1月12日 13:22
    版主
  • 可能不是Response.Redirect("Login.aspx", true); 本身的问题而是Login.aspx这个页面载入的时候卡住了~
    2010年1月12日 16:53
    版主
  •   还不行啊.  孟子.
    学习者
    2010年1月13日 2:38
  • 你的Login.ASPX是不是也继承了这个BasePage,如果是那肯定会不停的从Login.aspx转到Login.aspx。

    你试试这个login页面不继承 于这个basepage试试。
    Microsoft Online Community Support
    2010年1月13日 3:07
  • 大家好.    现在我来说一下模拟环境.  大家可以在本机上调试.

    页面有以下几页:Login.aspx , Default.aspx, A.aspx, B.aspx , BasePage类

    Login.aspx  继承System.UI.Page 点击按钮代码: Session["UserInfo"] = true;
    Response.Redict("Default.aspx")

    Default.aspx 继承BasePage 页面上只有两个超链接,分别链接到A页面和B页面.

    都是打开新窗口的方式链接.


    BasePage类
    publice Class BasePage:System.Web.UI.Page
    {
      protected override void OnPreInit(EventArgs e)
            {
    base.OnPreInit(e);
                ////没有登陆
                if (Session["UserInfo"] == null)
                {
            Reponse.Redirect("Login.aspx");
    }
    }
    }


    A页面.:  一个按钮, 当点击这个按钮, 需要查询数据库5分钟左右.

    B页面:  一个空页面, 在单击了A页面的按钮以后, 再从Default.aspx上点击B页面.

    这时B页面大约要阻塞2分钟左右,


    学习者
    2010年1月13日 9:29
  • 如果你在A页面,需要查询数据库,这可能就是导致你需要很长时间加载的原因。

    至于你说的B页面阻塞,你得跟踪调试下看看到底阻塞在哪个地方。如果也有数据库方面的查询,也很可能导致阻塞。

    你自己跟踪调试下,我们这边没有你的环境。
    Microsoft Online Community Support
    2010年1月14日 2:32
  • 你好

    上次没看清楚。
    你说“在查询的同时再打开B页面”是什么意思?
    或者提供相关代码。
    Microsoft Online Community Support
    2010年1月14日 2:36
  • 你好

    上次没看清楚。
    你说“在查询的同时再打开B页面”是什么意思?
    或者提供相关代码。
    Microsoft Online Community Support
    应该是打开了页面A,然后再打开B

    【孟子E章】
    2010年1月14日 4:13
    版主