帮助....说明:在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其来源的详细信息... [英] Help....Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in...

查看:267
本文介绍了帮助....说明:在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其来源的详细信息...的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

   使用系统; 
使用 System.Collections.Generic;
使用 System.Linq;
使用 System.Web;
使用 System.Web.UI;
使用 System.Web.UI.WebControls;
使用 System.Web.Security;
使用 System.Data.SqlClient;

命名空间 Ordering_System.member
{
public partial class MemEditDetails:System.Web.UI.Page
{
UserDBDataContext db = new UserDBDataContext();
string cs = Global.CS;

受保护 void Page_Load(对象发​​件人,EventArgs e)
{
如果(!Page.IsPostBack)
{
< span class =code-keyword> bool found = false ;

string id = User.Identity.Name;

string sql = SELECT Username FROM Member WHERE Username = @Id;
SqlConnection con = new SqlConnection(cs);
SqlCommand cmd = new SqlCommand(sql,con);
cmd.Parameters.AddWithValue( @ Id,id);

con.Open();
SqlDataReader dr = cmd.ExecuteReader();

if (dr.Read())
{
found = ;
lblMem.Text =( string )dr [ 用户名];
txtFname.Text =( string )dr [ MemFname]; < ----发生在这里

System.IndexOutOfRangeException

txtLname.Text =( string )dr [ MemLname];
txtMYKAD.Text =( string )dr [ MemIC];
txtDate.Text =( string )dr [ MemDOB];
rblGender.Text =( string )dr [ 性别];
txtAddress.Text =( string )dr [ MemAddress];
txtPostCode.Text =( string )dr [ 邮编];
ddlstate.Text =( string )dr [ 国家];
txtContact.Text =( string )dr [ MemContact];
txtEmail.Text =( string )dr [ MemEmail];


}
dr.Close();
con.Close();

if (!found)
{
Response.Redirect( Home.aspx);
}

}
}

受保护 void btn_Edit_Click( object sender,EventArgs e)
{
if (Page.IsValid)
{
string id = lblMem.Text;
string Fname = txtFname.Text;
string Lname = txtLname.Text;
string ic = txtMYKAD.Text;
string dob = txtDate.Text;
string gender = rblGender.Text;
string address = txtAddress.Text;
string postcode = txtPostCode.Text;
string state = ddlstate.Text;
string contact = txtContact.Text;
string email = txtEmail.Text;
string oldPW = oldPass.Text;
string newPW = newPass.Text;
string confirmPW = confirmPass.Text;

用户u = db.Users.SingleOrDefault(
x = > x.Username == id&&
x.Hash == Security.GetHash(oldPW)
);


if (u!= null
{

if (newPass.Text == confirmPass.Text)
{
string sql = @ UPDATE Member SET Hash = @Password MemFname = @ Fname,MemLanme = @Lname MemIC = @Ic,MemDOB = @DOB,性别= @Gender,
MemAddress = @地址,邮政编码= @ Postcode,州= @State,MemContact = @Contact,
MemEmail = @Email用户名= @Id
;
SqlConnection con = new SqlConnection(cs);
SqlCommand cmd = new SqlCommand(sql,con);
cmd.Parameters.AddWithValue( @ Password,Security.GetHash(newPW)) ;
cmd.Parameters.AddWithValue( @ Id,id);
cmd.Parameters.AddWithValue( @ Fname,Fname);
cmd.Parameters.AddWithValue( @ Lname,Lname);
cmd.Parameters.AddWithValue( @ Ic,ic);
cmd.Parameters.AddWithValue( @ DOB,dob);
cmd.Parameters.AddWithValue( @ Gender,性别);
cmd.Parameters.AddWithValue( @ Address,address);
cmd.Parameters.AddWithValue( @ Postcode,邮政编码);
cmd.Parameters.AddWithValue( @ State,state);
cmd.Parameters.AddWithValue( @ Contact,contact);
cmd.Parameters.AddWithValue( @ Email,email);

con.Open();
cmd.ExecuteNonQuery();
con.Close();

Response.Redirect( Home.aspx);

}
else
{
CustomValidator2.IsValid = ;
}

}
else
{
CustomValidator1.IsValid = ;

}
}
}
}
}

解决方案

您只选择 UserName 通过以下查询。

  string  sql =   SELECT 用户名 FROM成员WHERE用户名= @ Id; 



但您也在阅读其他专栏。



所以,包括查询中用逗号分隔的那些列。


调试源代码以找出出错的确切位置。

这应该可以帮助您缩小范围问题

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.Data.SqlClient;

namespace Ordering_System.member
{
    public partial class MemEditDetails : System.Web.UI.Page
    {
        UserDBDataContext db = new UserDBDataContext();
        string cs = Global.CS;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                bool found = false;

                string id = User.Identity.Name;

                string sql = "SELECT Username FROM Member WHERE Username = @Id";
                SqlConnection con = new SqlConnection(cs);
                SqlCommand cmd = new SqlCommand(sql, con);
                cmd.Parameters.AddWithValue("@Id", id);

                con.Open();
                SqlDataReader dr = cmd.ExecuteReader();

                if (dr.Read())
                {
                    found = true;
                    lblMem.Text = (string)dr["Username"];
                    txtFname.Text = (string)dr["MemFname"]; <----Happened here  

                                                           System.IndexOutOfRangeException

                    txtLname.Text = (string)dr["MemLname"];
                    txtMYKAD.Text = (string)dr["MemIC"];
                    txtDate.Text = (string)dr["MemDOB"];
                    rblGender.Text = (string)dr["Gender"];
                    txtAddress.Text = (string)dr["MemAddress"];
                    txtPostCode.Text = (string)dr["Postcode"];
                    ddlstate.Text = (string)dr["State"];
                    txtContact.Text = (string)dr["MemContact"];
                    txtEmail.Text = (string)dr["MemEmail"];


                }
                dr.Close();
                con.Close();

                if (!found)
                {
                    Response.Redirect("Home.aspx");
                }

            }
        }

        protected void btn_Edit_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                string id = lblMem.Text;
                string Fname = txtFname.Text;    
                string Lname = txtLname.Text;
                string ic = txtMYKAD.Text;
                string dob = txtDate.Text;
                string gender = rblGender.Text;
                string address = txtAddress.Text;
                string postcode = txtPostCode.Text;
                string state = ddlstate.Text;
                string contact = txtContact.Text;
                string email = txtEmail.Text;
                string oldPW = oldPass.Text;
                string newPW = newPass.Text;
                string confirmPW = confirmPass.Text;

                User u = db.Users.SingleOrDefault(
                           x => x.Username == id &&
                                x.Hash == Security.GetHash(oldPW)
                                );


                if (u != null)
                {

                    if (newPass.Text == confirmPass.Text)
                    {
                        string sql = @"UPDATE Member SET Hash = @Password MemFname = @Fname,MemLanme = @Lname MemIC = @Ic, MemDOB = @DOB, Gender = @Gender , 
                            MemAddress = @Address, Postcode = @Postcode,  State = @State, MemContact = @Contact,
                            MemEmail = @Email WHERE Username = @Id";
                        SqlConnection con = new SqlConnection(cs);
                        SqlCommand cmd = new SqlCommand(sql, con);
                        cmd.Parameters.AddWithValue("@Password", Security.GetHash(newPW));
                        cmd.Parameters.AddWithValue("@Id", id);
                        cmd.Parameters.AddWithValue("@Fname", Fname);
                        cmd.Parameters.AddWithValue("@Lname", Lname);
                        cmd.Parameters.AddWithValue("@Ic", ic);
                        cmd.Parameters.AddWithValue("@DOB", dob);
                        cmd.Parameters.AddWithValue("@Gender", gender);
                        cmd.Parameters.AddWithValue("@Address", address);
                        cmd.Parameters.AddWithValue("@Postcode", postcode);
                        cmd.Parameters.AddWithValue("@State", state);
                        cmd.Parameters.AddWithValue("@Contact", contact);
                        cmd.Parameters.AddWithValue("@Email", email);

                        con.Open();
                        cmd.ExecuteNonQuery();
                        con.Close();

                        Response.Redirect("Home.aspx");

                    }
                    else
                    {
                        CustomValidator2.IsValid = false;
                    }

                }
                else
                {
                    CustomValidator1.IsValid = false;

                }
            }
        }
    }
}

解决方案

You are selecting only the UserName By the following query.

string sql = "SELECT Username FROM Member WHERE Username = @Id";


But you are reading other columns as well.

So, include those columns in the query separated by comma.


Debug your source code to figure out the exact spot you get the error.
This should help you narrow down the problem.


这篇关于帮助....说明:在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其来源的详细信息...的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆