首先说明,我打算做个聊天简单的网上聊天室,主界面是main.aspx,它是一个frameset框架页,由3张不同的网页showinfo.aspx,talk.aspx,send.aspx构成,本来登录后进入main.aspx页是可以正常显示出3张网页来的。
但为了防止别人跳过登录页login.aspx直接输入网址非法进入其它网页,我在登录页设置了一个session["username"]并赋值为姓名文本框的值,如下
string username = textboxname.Text.Trim();
Session["username"] = username;
然后我添加了一个judge.aspx页,后台代码如下:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class judge : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] == "" || Session["username"] == null)
{
Response.Redirect("LoginPage.aspx"); //若session为空,则返回登录页
}
}
}
接着在main.aspx页page_load里调用server.exucute方法验证,如下:
Server.Execute("judge.aspx");
问题来了,现在虽然直接输入其它页面的地址会跳转到login.aspx页,但是当我输入正确的用户名和密码,点登录后main.aspx页面却是一片空白,框架好像失效了!为此,我在main.aspx页page_load里多加了一行:
Response.Write(Session["username"]);
它能正确显示出session的值,也就是session的值是传过来了的!
请高手指教!