首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于session的一点有关问题,

2013-11-25 
关于session的一点问题,在线等。我有2个页面,每个页面都有许多数据。点击数据可以显示其最近一段时间的数据

关于session的一点问题,在线等。
我有2个页面,每个页面都有许多数据。
点击数据可以显示其最近一段时间的数据曲线。
如果单独在一个页面中点击数据,可以使显示数据的曲线叠加。
但是如果第一个页面点了一个数据以后,再到第二个页面中去点击。
数据曲线就无法叠加显示。
一开始以为是session数据丢失,按百度的方法去在web.config文件里面修改。
直接无法打开数据曲线显示的页面

public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        string[] pItem = context.Request["points"].Split(new char[] { '|' });
        String pointString = "";
        for (int i = 0; i < pItem.Length; i++)
        {
            pItem[i] = GetExtendId(pItem[i]);
            //if (!pointString.Contains(pItem[i]))
            //{
                if (pItem.Length == 1)
                {
                    pointString = pItem[i];
                }
                else
                {
                    pointString += "|" + pItem[i];
                }
            //}
        }
        if (context.Session["tag"] != null)
        {
            context.Session["tag"] = context.Session["tag"].ToString() + "|" + pointString;
        }
        else
            context.Session["tag"] = pointString;


        ybTrend.ChartRespData respData = ybTrend.Utilites.QueryChartRespData(pointString,
                context.Request["startTime"], context.Request["endTime"],
                context.Request["period"]);

        JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
        string resp = jsonSerializer.Serialize(respData);

        context.Response.Write(resp);
        context.Response.End();
    }

这是handle.ashx里面session的设置。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            String tag = Request["Tag1"];
            string[] pItem = tag.Split(new char[] { '|' });
            String pointString = "";
            for (int i = 0; i < pItem.Length; i++)
            {
                pItem[i] = GetExtendId(pItem[i]);
                if (pItem.Length == 1)
                {
                    pointString = pItem[i];
                }
                else
                {
                    pointString += "|" + pItem[i];
                }
            }
            if (Session["tag"] != null)


            {
                String pointsList = Session["tag"].ToString();
                String[] ps = pointsList.Split(new char[] { '|' });
                if (ps.Length > 10)
                {
                    Session["tag"] = null;
                    this.points.Value = pointString;
                }
                else
                {

                    if (!Session["tag"].ToString().Contains(pointString))
                    {
                        this.points.Value = pointsList + "|" + pointString;
                    }
                    else
                    {
                        this.points.Value = pointsList;
                    }
                }
            }
            else
            {
                this.points.Value = pointString;
            }
            if (Request["UserName"] != null)
            {
                Session["userName"] = Request["UserName"].ToString();
            }

            // set first query point//  Session["tag"].ToString();//
            this.startTime.Value = Request["StartTime"].ToString().Replace("-", "/"); // set query start time
            this.endTime.Value = Request["EndTime"].ToString().Replace("-", "/"); // set query end time
            this.period.Value = "" + Convert.ToInt32(ConfigurationManager.AppSettings["DefaultPeriod"]); // set query period
            this.intervalA.Value = "" + interval1;
            this.intervalB.Value = "" + interval2;
            this.intervalC.Value = "" + interval3;
            this.QueryPeriod.Text = this.period.Value;
            this.QueryStartDate.Value = DateTime.Parse(DateTime.Parse(Request["StartTime"]).ToShortDateString());
            this.QueryStartTime.Text = Request["StartTime"].Split(new char[] { ' ' })[1].Split(new char[] { ':' })[0] + ":" + Request["StartTime"].Split(new char[] { ' ' })[1].Split(new char[] { ':' })[1];
            this.QueryEndDate.Value = DateTime.Parse(DateTime.Parse(Request["EndTime"]).ToShortDateString());
            this.QueryEndTime.Text = Request["EndTime"].Split(new char[] { ' ' })[1].Split(new char[] { ':' })[0] + ":" + Request["EndTime"].Split(new char[] { ' ' })[1].Split(new char[] { ':' })[1];
            ReadUserInfo();



        }
    }

这个是页面获得session值,求各位大神帮忙看下为什么会出现session中数据丢失的情况
[解决办法]
pointString += "
[解决办法]
" + pItem[i];会不会是这里的'
[解决办法]
'与context.Session["tag"] = context.Session["tag"].ToString() + "
[解决办法]
" + pointString;冲突呢?,分划符一样,又怎么能区分哪个是哪个?
[解决办法]
context.Session["tag"] = context.Session["tag"].ToString() + "
[解决办法]
" + pointString;

貌似这边有问题,最好不要用session进行字符串拼接,session不是很稳定的,容易丢失
[解决办法]
引用:
Quote: 引用:

context.Session["tag"] = context.Session["tag"].ToString() + "
[解决办法]
" + pointString;

貌似这边有问题,最好不要用session进行字符串拼接,session不是很稳定的,容易丢失
但是第2次请求需要用到第一次请求的信息,这些信息就是放到session里面的。

不要拼接,那就取出来用一变量保存后用这变量拼接哇。

热点排行