我在一个登陆界面中定义了一个Session值,可是到了Admin却不能用,这到底是为什么!
以下是登陆的源码:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;namespace Study
{
/// <summary>
/// NewsAdminLogin 的摘要说明。
/// </summary>
public class NewsAdminLogin : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox AdminPwd;
protected System.Web.UI.WebControls.Button NewsAdminSubmit;
protected System.Web.UI.WebControls.Button NewsAdminReset;
protected System.Web.UI.WebControls.RequiredFieldValidator RAdminID;
protected System.Web.UI.WebControls.RequiredFieldValidator RAdminPwd;
protected System.Web.UI.WebControls.Label ErrMessage;
protected System.Web.UI.WebControls.TextBox AdminID;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.NewsAdminSubmit.Click += new System.EventHandler(this.NewsAdminSubmit_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void NewsAdminSubmit_Click(object sender, System.EventArgs e)
{   
string adminID=AdminID.Text;
string AdminPWD=AdminPwd.Text;
string strsql="select * from newsadmin where adminid='"+adminID+"' and adminpwd='"+AdminPWD+"'";
DataRead getadmin=new DataRead();
SqlCommand cmd=new SqlCommand(strsql,getadmin.cn);
getadmin.cn.Open();
SqlDataReader dr=cmd.ExecuteReader();
if(dr.Read())
{
Response.Redirect("NewsAdmin.aspx");
Session["AdminID"]=this.AdminID.Text.ToString();
Session["AdminPWD"]=this.AdminPwd.Text.ToString();
}
else
{
                ErrMessage.Text="密码或用户名错误,请重新输入";
}
dr.Close();
getadmin.cn.Close();
}
}
}
以下是接受页面的源码!
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Web.Security;namespace Study
{
/// <summary>
/// NewsAdmin 的摘要说明。
/// </summary>
public class NewsAdmin : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button AddNews;
protected System.Web.UI.WebControls.Button AlterNews;
protected System.Web.UI.WebControls.Button Logout;
protected System.Web.UI.WebControls.Button DelNews;

private void Page_Load(object sender, System.EventArgs e)
{
if(Session["AdminID"]==null)
{
Response.Redirect("NewsAdminLogin.aspx");
}
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.AddNews.Click += new System.EventHandler(this.AddNews_Click);
this.AlterNews.Click += new System.EventHandler(this.AlterNews_Click);
this.DelNews.Click += new System.EventHandler(this.DelNews_Click);
this.Logout.Click += new System.EventHandler(this.Logout_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void AddNews_Click(object sender, System.EventArgs e)
{
Response.Redirect("addnews.aspx");
} private void AlterNews_Click(object sender, System.EventArgs e)
{
Response.Redirect("AlterNewsShow.aspx");
} private void DelNews_Click(object sender, System.EventArgs e)
{
Response.Redirect("DelNewsShow.aspx");
} private void Logout_Click(object sender, System.EventArgs e)
{
FormsAuthentication.SignOut();
Response.Redirect("newshow.aspx");
}
}
}出现的问题是:即使在NewsAdminLogin中输入了密码也到不了NewsAdmin中还是在NewsAdminLogin页中!
就是输入密码也不能登陆到相应的页面还是停留在登陆页面!
另外把这个if判断放在这里行吗?位置对吗?!
if(Session["AdminID"]==null)
{
Response.Redirect("NewsAdminLogin.aspx");
}
急求回答!

解决方案 »

  1.   

    补充一下啊!web.config我设置是这样的!
      <authorization>
            <allow users="?" /> <!-- 允许所有用户 -->
                <!--  <allow     users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                      <deny      users="[逗号分隔的用户列表]"
                                 roles="[逗号分隔的角色列表]"/>
                -->
        </authorization>
    <sessionState 
                mode="StateServer"
                stateConnectionString="tcpip=127.0.0.1:42424"
                sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
                cookieless="false" 
                timeout="140"
                stateNetworkTimeout="14400" 
        />
      

  2.   


    if(dr.Read())
    {
    Response.Redirect("NewsAdmin.aspx");
    Session["AdminID"]=this.AdminID.Text.ToString();
    Session["AdminPWD"]=this.AdminPwd.Text.ToString();
    }
    中的:
    Session["AdminID"]=this.AdminID.Text.ToString();
    Session["AdminPWD"]=this.AdminPwd.Text.ToString();
    没有执行,因为页面已经跳转了
    改为:
    if(dr.Read())
    {
       Session["AdminID"]=this.AdminID.Text.ToString();
       Session["AdminPWD"]=this.AdminPwd.Text.ToString();
       Response.Redirect("NewsAdmin.aspx");    
    }
    试一下
      

  3.   

    是不是在设置SESSION的时间上?