类库代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class Default : System.Web.UI.Page
{
    static string sValidator = "";
    private readonly string sValidatorImageUrl = "ValidateImage.aspx?Validator=";    protected void Page_Load(object sender, EventArgs e)
    {        
        ///添加页面初始化代码
        if (!Page.IsPostBack)
        {
            sValidator = GetRandomint();
            ValidateImage.ImageUrl = sValidatorImageUrl + sValidator;
        }
    }    protected void LoginBtn_Click(object sender, EventArgs e)
    {
        ///如果页面输入合法
        if (Page.IsValid == true)
        {
            if (Validator.Text != sValidator)
            {
                Message.Text = "验证码输入错误,请重新输入验证码!!!";
                sValidator = GetRandomint();
                ValidateImage.ImageUrl = sValidatorImageUrl + sValidator;
                return;
            }            String userId = "";            ///定义类并获取用户的登陆信息            
WebDBManage.User user = new WebDBManage.User();
            SqlDataReader recu = user.GetUserLogin(UserName.Text.Trim(),Password.Text.Trim());            ///判断用户是否合法
            if (recu.Read())
            {
                userId = recu["UserID"].ToString();
            }
            recu.Close();
            ///验证用户合法性,并跳转到系统平台
            if ((userId != null) && (userId != ""))
            {
                Session["UserID"] = userId;                //跳转到登录后的第一个页面
                Response.Redirect("~/Main.aspx");
            }
            else
            {
                sValidator = GetRandomint();
                ValidateImage.ImageUrl = sValidatorImageUrl + sValidator;
                ///显示错误信息
                Message.Text = "你输入的用户名称或者密码有误,请重新输入!";
            }
        }
    }    protected void CancelBtn_Click(object sender, EventArgs e)
    {
        ///清空用户名称和密码输入框
        UserName.Text = Password.Text = "";
    }    private String GetRandomint()
    {
        Random random = new Random();
        return (random.Next(100000,999999).ToString());
    }
}哪位高手指点一下啊~~急需~~先谢谢了啊~~

解决方案 »

  1.   

    user.GetUserLogin
    方法代码贴出来看看.
    你确实返回的不是空?!
      

  2.   

    user.GetUserLogin 是不是没有返回对象?
      

  3.   

    if(recu!=null&&recu.Read())
    ...
      

  4.   

    我倒.....
    你是通用用户名和密码到数据查询的是吧,如select fields from table where username=xxx and pwd=yyy
    是不是, 如果在数据库查询没有返回, 那当然是你的用户名和密码不对了, 如果密码和用户都对, 那你要检查一下你的代码哪里错了.
      

  5.   

    到数据层看一下,到数据层的GetUserLogin()里看一下,有没有两个变量名字相同,比如有两个userid,我举段DA层的Get代码你看一下                objMmsProject.PrjDeptId = objRow[MmsProjectSchema.PRJ_DEPT_ID]==DBNull.Value ? "":Convert.ToString(objRow[MmsProjectSchema.PRJ_DEPT_ID]);               
                    objMmsProject.PrjSubDeptId = objRow[MmsProjectSchema.PRJ_SUB_DEPT_ID]==DBNull.Value ? "":Convert.ToString(objRow[MmsProjectSchema.PRJ_SUB_DEPT_ID]);               
                                               
    如果PrjDeptId 这里变成了PrjSubDeptId ,出现两个PrjSubDeptId ,而后面相对的MmsProjectSchema.PRJ_DEPT_ID没有改变的话,是会报“ 未将对象引用设置到对象的实例”这个错误的
      

  6.   

    一般出现这种报错都是DA层出的问题,查询的数据与数据库里的列不匹配所造成的,比如数据库里有两个字段:userid,password。 但是在程序里只有一个字段userid,没有password,则user.GetUserLogin返回的值就是NULL 
      

  7.   

    LZ,把 user.GetUserLogin 方法拿出来给大家看看。
      

  8.   

    谢谢楼上的各位兄弟,最近忙好久没来了,老问题还是没有解决~~我把user.GetUserLogin   方法 贴出来,希望哪位大虾给与指点一下~using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Security.Cryptography;
    using SQLHelper;
    using System.Data.SqlClient;
    using System.Text;namespace DocumentManager
    {
        /// <summary>
        /// Summary description for User
        /// </summary>
        public class User
        {
            public static readonly int USERTYPESUPERADMIN = 0;
            public static readonly int USERTYPEADMIN = 1;
            public static readonly int USERTYPENORMAL = 2;        public SqlDataReader GetUserLogin(string sUserName, string sPassword)
            {
                ///定义类SQLHelper
                SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();            ///定义保存从数据库获取的结果的DataReader
                SqlDataReader dr = null;            ///创建访问数据库的参数
                SqlParameter[] paramList = {
       sqlHelper.CreateInParam("@UserName",SqlDbType.VarChar,200,sUserName),
       sqlHelper.CreateInParam("@Password",SqlDbType.VarChar,255,sPassword)
       };            try
                {
                    ///执行存储过程
                    sqlHelper.RunProc("Pr_GetUserLogin", paramList, out dr);
                }
                catch (Exception ex)
                {
                    ///抛出执行数据库异常
                    SystemError.CreateErrorLog(ex.Message);
                    throw new Exception(ex.Message, ex);
                }            ///返回从数据库获取的结果
                return (dr);
            }        public SqlDataReader GetUsers()
            {
                ///定义类SQLHelper
                SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();            ///定义保存从数据库获取的结果的DataReader
                SqlDataReader dr = null;            try
                {
                    ///执行存储过程
                    sqlHelper.RunProc("Pr_GetUsers", out dr);
                }
                catch (Exception ex)
                {
                    ///抛出执行数据库异常
                    SystemError.CreateErrorLog(ex.Message);
                    throw new Exception(ex.Message, ex);
                }            ///返回从数据库获取的结果
                return (dr);
            }        public SqlDataReader GetSingleUser(int nUserID)
            {
                ///定义类SQLHelper
                SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();            ///定义保存从数据库获取的结果的DataReader
                SqlDataReader dr = null;            ///创建访问数据库的参数
                SqlParameter[] paramList = {
       sqlHelper.CreateInParam("@UserID",SqlDbType.Int,4,nUserID)
       };            try
                {
                    ///执行存储过程
                    sqlHelper.RunProc("Pr_GetSingleUser", paramList, out dr);
                }
                catch (Exception ex)
                {
                    ///抛出执行数据库异常
                    SystemError.CreateErrorLog(ex.Message);
                    throw new Exception(ex.Message, ex);
                }            ///返回从数据库获取的结果
                return (dr);
            }        public int AddUser(string sUserName, string sPassword, string sEmail,int nRoleID)
            {
                ///定义类SQLHelper
                SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();            ///创建访问数据库的参数
                SqlParameter[] paramList = {
       sqlHelper.CreateInParam("@UserName",SqlDbType.VarChar,200,sUserName),
       sqlHelper.CreateInParam("@Password",SqlDbType.VarChar,255,sPassword),
                                               sqlHelper.CreateInParam("@Email",SqlDbType.VarChar,200,sEmail),
       sqlHelper.CreateInParam("@RoleID",SqlDbType.Int,4,nRoleID)
       };            try
                {
                    ///执行存储过程
                    return (sqlHelper.RunProc("Pr_AddUser", paramList));
                }
                catch (Exception ex)
                {
                    ///抛出执行数据库异常
                    SystemError.CreateErrorLog(ex.Message);
                    throw new Exception(ex.Message, ex);
                }
            }        public void UpdateUserPwd(int nUserID, string sPassword)
            {
                ///定义类SQLHelper
                SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();            ///创建访问数据库的参数
                SqlParameter[] paramList = {
       sqlHelper.CreateInParam("@UserID",SqlDbType.Int,4,nUserID),
       sqlHelper.CreateInParam("@Password",SqlDbType.VarChar,255,sPassword)
       };            try
                {
                    ///执行存储过程
                    sqlHelper.RunProc("Pr_UpdateUserPwd", paramList);
                }
                catch (Exception ex)
                {
                    ///抛出执行数据库异常
                    SystemError.CreateErrorLog(ex.Message);
                    throw new Exception(ex.Message, ex);
                }
            }        public void DeleteUser(int nUserID)
            {
                ///定义类SQLHelper
                SQLHelper.SQLHelper sqlHelper = new SQLHelper.SQLHelper();            ///创建访问数据库的参数
                SqlParameter[] paramList = {
       sqlHelper.CreateInParam("@UserID",SqlDbType.Int,4,nUserID)
       };            try
                {
                    ///执行存储过程
                    sqlHelper.RunProc("Pr_DeleteUser", paramList);
                }
                catch (Exception ex)
                {
                    ///抛出执行数据库异常
                    SystemError.CreateErrorLog(ex.Message);
                    throw new Exception(ex.Message, ex);
                }
            }        /// <summary>
            /// 用户加密函数
            /// </summary>
            public static String Encrypt(string password)
            {
                Byte[] clearBytes = new UnicodeEncoding().GetBytes(password);
                Byte[] hashedBytes = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(clearBytes);            return BitConverter.ToString(hashedBytes);
            }        /// <summary>
            /// 判断用户的类型:
            /// 0:超级管理员;
            /// 1:管理员;
            /// 2:普通用户。
            /// </summary>
            /// <param name="sUserID"></param>
            /// <returns>UserType</returns>
            public static int IsAuthorityAdmin(string sUserID)
            {
                ///用户ID为空
                if (sUserID == null || sUserID == "")
                {
                    return (Int32.MaxValue);
                }            ///获取用户所属的类型
                string sUserType = "";
                User user = new User();
                SqlDataReader recu = user.GetSingleUser(Int32.Parse(sUserID));
                if (recu.Read())
                {
                    ///读取用户类型
                    sUserType = recu["UserType"].ToString();
                }
                recu.Close();
                if (sUserType == "")
                {
                    return (Int32.MaxValue);
                }
                return (Int32.Parse(sUserType));
            }
        }
    }
      

  9.   

    recu 这个对象为空,仔细检查一下。