我有一个表单,您可以在其中输入您的电子邮件,然后收到重置密码的指示。它有一个文本框(txtEmail),一个提交按钮(btnResetPassword
)和一个lblMessage
。无法解决“在System.Data.dll中发生类型'System.Data.SqlClient.SqlException'的异常,但未在用户代码中处理”
我的C#代码如下所示:
protected void btnResetPassword_Click(object sender, EventArgs e)
{
string CS = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
SqlCommand cmd = new SqlCommand("spResetPassword", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter paramEmail = new SqlParameter("@Email", txtEmail.Text);
cmd.Parameters.Add(paramEmail);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
if (Convert.ToBoolean(rdr["ReturnCode"]))
{
SendPasswordResetEmail(rdr["Email"].ToString(), rdr["UniqueId"].ToString());
lblMessage.Text = "An email with instructions to reset your password is sent to your registered email";
}
else
{
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "Username not found!";
}
}
}
}
然后我有一个方法SendPasswordResetEmail(string email, string ID)
的正常工作(SMTP)。
存储过程是:
CREATE PROC Spresetpassword @Email NVARCHAR(100)
AS
BEGIN
DECLARE @UserId INT
SELECT @UserId = id
FROM dbo.turiststbl
WHERE email = @Email
IF (@UserId IS NOT NULL)
BEGIN
--If username exists
DECLARE @GUID UNIQUEIDENTIFIER
SET @GUID = Newid()
INSERT INTO tblresetpasswordrequests (id, userid, resetrequestdatetime)
VALUES (@GUID, @UserId, Getdate())
SELECT
1 AS ReturnCode,
@GUID AS UniqueId,
@Email AS Email
END
ELSE
BEGIN
--If username does not exist
SELECT
0 AS ReturnCode,
NULL AS UniqueId,
NULL AS Email
END
END
当我进入我的电子邮件,我得到以下错误:
我能做些什么?
编辑:数据库文件是不是本地的,他们是一个远程服务器
看来你有一个数据库连接字符串问题。你能提到当前的数据库连接字符串? –
从web.config文件中: connectionStrings> @TetsuyaYamamoto –
concretejungle
请不要发布错误消息的屏幕截图。说:“将异常的详细信息复制到剪贴板”?单击它,并将消息发布到您的问题 –