我有一個表單,您可以在其中輸入您的電子郵件,然後收到重置密碼的指示。它有一個文本框(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
請不要發佈錯誤消息的屏幕截圖。說:「將異常的詳細信息複製到剪貼板」?單擊它,並將消息發佈到您的問題 –