错误提示:
编译错误 
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 
编译器错误信息: CS0103: 当前上下文中不存在名称“AddUser”
源错误:
行 35: 
行 36:                 //添加用户 部门还没添加
行 37:                 AddUser(straccount, strPwd, tbx_name.Text.Trim(), rbl_sex.SelectedIndex, tbx_tel.Text.Trim(), dpl_question.SelectedIndex, tbx_answer.Text.Trim());
行 38: 
行 39:                 //重新定向到首页面
源文件: d:\xsgl\reg.aspx.cs    行: 37 AddUser这个函数我放在了App_Code目录下的Database.cs文件中,不是说App_Code中的文件自动链接到应用程序,而不需要在页面中添加任何显式指令吗?为什么还会出现上面的错误?

解决方案 »

  1.   

    你用了vs2003了?还是你的命名空间结构发生了问题?App_Code.AddUser(....   这样通过命名空间引用一下试试,如果可以,检查一下命名空间结构!
      

  2.   

    如果你的database.cs的命名空间和reg.aspx.cs的命名空间相同。
    就可以直接用“类名.静态方法”直接调用了
      

  3.   

    看看AddUser方法的命名空间是什么,App_Code下的自定义类方法也需要引用命名空间,如果不想引用就要使用全名称:XX命名空间.XX类名.AddUser方法
      

  4.   

    我是新手!谢谢大家的帮助!但还是有点不懂!我把代码贴上来大家帮看看!
    reg.aspx.csusing 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;public partial class reg : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        protected void btn_agree_Click(object sender, EventArgs e)
        {
            //判断页面是否有效
            if (Page.IsValid)
            {
                //验证用户名是否重用
                CheckUser();
                //验证密码是否合法
                //CheckPwd();
                //验证码是否正确
                CheckCode();
                //如果全部正确,操作数据库
                if (CheckCode() == true && CheckUser() == true)
                {
                    //用户数据加密
                    string strPwd = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(tbx_pwd.Text.Trim(), "md5");
                    string straccount = tbx_account.Text.Trim();                //添加用户 部门还没添加
                    AddUser(straccount, strPwd, tbx_name.Text.Trim(), rbl_sex.SelectedIndex, tbx_tel.Text.Trim(), dpl_question.SelectedIndex, tbx_answer.Text.Trim());                //重新定向到首页面
                    Response.Redirect("Default.aspx");
                }
            }
        }
    //验证用户名是否被使用
    public bool CheckUser()
    {
        string account0 = tbx_account.Text.Trim();
        //检查account是否重用
        if(IsUsed(account0)==true)
        {
            lbl_account.Text="该用户名已经被使用!";
            lbl_account.Visible=true;
            return false;
        }
        else
        {
            return true;
        }
    }//验证码是否正确
        public bool CheckCode()
        {
            //验证码
            if (String.Compare(Session["CheckCode"].ToString(), tbx_chkcode.Text.Trim(), true) != 0)
            {
                lbl_chkcode.Text = "验证码错误,请输入正确的验证码。";
                lbl_chkcode.Visible = true;
                return false;
            }
            else
            {
                return true;
            }
        }
    }App_Code目录下的Database.cs文件代码:
    /*----------------------------------------------------------------
    // Copyright (C) 2008 熊旭东
    // 版权所有。 
    //
    // 文件名:database.cs
    // 文件功能描述:数据库操作函数
    //
    // 
    // 创建标识:
    //
    // 修改标识:
    // 修改描述:
    //
    // 修改标识:
    // 修改描述:
    //----------------------------------------------------------------*/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.Data.SqlClient;/// <summary>
    /// Database 的摘要说明
    /// </summary>
    public class Database : System.Web.UI.Page
    {
    public Database()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
        //读取配置文件中的数据库连接字符串
        public string getstring()
        {
            //读取数据库连接字符串
            string settings = Convert.ToString(ConfigurationManager.ConnectionStrings["SqlServices"]);
            return settings;
        }
        //---------------------------------------------------------------------------------
        //                                   注册时使用类
        //---------------------------------------------------------------------------------
        //检查用户名地址是否可用
        public bool IsUsed(string account)
        {
            SqlConnection myconn = new SqlConnection(getstring());
            //打开数据库连接
            myconn.Open();        //创建数据库命令
            SqlCommand mycmd = new SqlCommand("CheckUser", myconn);
            //设置数据库命令类型为存储过程
            mycmd.CommandType = CommandType.StoredProcedure;        //命令参数
            SqlParameter accountparameter = mycmd.Parameters.Add("@UserAccount", SqlDbType.NVarChar, 50);
            accountparameter.Value = account;        SqlDataReader mydr = mycmd.ExecuteReader();
            try
            {
                if (mydr.Read())
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            finally
            {
                //关闭操作
                mydr.Close();
                myconn.Close();
            }
        }    //注册新用户-添加基本信息
        public void AddUser(string account, string pwd, string username, int sex, string usertel, string question, string answer)
        {
            //获取用户IP地址
            string userIP = Request.UserHostAddress.ToString();        //创建数据库连接对象
            SqlConnection myconn = new SqlConnection(getstring());        //打开数据库连接
            myconn.Open();        //创建数据库命令
            SqlCommand mycmd = new SqlCommand("UserReg", myconn);
            //设置数据库命令类型为存储过程
            mycmd.CommandType = CommandType.StoredProcedure;        //命令参数        SqlParameter accountparameter = mycmd.Parameters.Add("@UserAccount", SqlDbType.NVarChar, 50);
            accountparameter.Value = account; SqlParameter userpwd = mycmd.Parameters.Add("@UserPwd", SqlDbType.NVarChar, 50);
            userpwd.Value = pwd;        SqlParameter usernameparameter = mycmd.Parameters.Add("@UserName", SqlDbType.NVarChar, 50);
            usernameparameter.Value = username;        SqlParameter sexparameter = mycmd.Parameters.Add("@Sex", SqlDbType.Int);
            sexparameter.Value = sex; SqlParameter usertelparameter = mycmd.Parameters.Add("@UserTel", SqlDbType.NVarChar,50);
    usertelparameter.Value = usertel;        SqlParameter questionparameter = mycmd.Parameters.Add("@Question", SqlDbType.NVarChar, 50);
            questionparameter.Value = question;        SqlParameter answerparameter = mycmd.Parameters.Add("@Answer", SqlDbType.NVarChar, 50);
            answerparameter.Value = answer;        SqlParameter userip = mycmd.Parameters.Add("@UserIP", SqlDbType.NVarChar, 50);
            userip.Value = userIP;        SqlParameter regdate = mycmd.Parameters.Add("@RegDate", SqlDbType.DateTime);
            regdate.Value = DateTime.Now;        mycmd.ExecuteNonQuery();
            myconn.Close();
        }
        //显示所有用户信息
        public SqlDataReader UserDetail()
        {
            SqlConnection myconn = new SqlConnection(getstring());
            //打开数据库连接
            myconn.Open();        //创建SQL查询
            string strsql = "select * from users";
            //创建命令对象
            SqlCommand mycmd = new SqlCommand(strsql, myconn);        SqlDataReader dr = mycmd.ExecuteReader(CommandBehavior.CloseConnection);
            return dr;
        }
    }
      

  5.   

    我觉得代码好象没问题!
    我操作的时候没有在VS2005环境下进行的!
    直接自己在主目录下建了一个App_Code文件夹,然后把Database.cs拷贝进去的!
    是不是这样的操作的问题?
      

  6.   

    一看就是没有理解面向对象。
    你要使用database里的非静态方法。必须先创建一个database实例,如:database db=new database()
    然后再用db.adduser()
      

  7.   

    VS 2005 下的话,不需要“reg.aspx.csusing System;”
    你的Database.cs里:
    public void AddUser()改为:public static void AddUser()
    定义成静态方法。然后直接在reg.aspx.cs里这样用就行:Database.AddUser(),很直观的这样
      

  8.   

    你在App_Code创建类时,会发现没有智能提示。在页面后台引用时,会抱错,说不存在。 
    解决的办法就是选中你的类文件,在属性中”高级“中的”生成操作“默认”内容“要改为编译就可以了。