我有一个SqlDataSource,它有一个OnInserted处理程序。该处理程序会发送一封电子邮件,并从插入的记录中获取数据,包括其ID(一个输出参数)。
昨天,我收到了一个时间戳为下午4:00的处理程序发送的电子邮件,比SQL中提交记录的时间戳早20分钟。如果您认为这是Web/SQL/Exchange服务器之间的机器时间差异...我已经排除了这种可能性。插入是通过存储过程执行的,它会在多个表中插入记录。所有这些表都具有下午4:20的时间戳。
此外,电子邮件包含一个不准确的ID,与记录没有在发送电子邮件时提交一致。
问题是,在SQL记录提交之前,SqlDataSource的OnInserted处理程序如何发送电子邮件?
昨天,我收到了一个时间戳为下午4:00的处理程序发送的电子邮件,比SQL中提交记录的时间戳早20分钟。如果您认为这是Web/SQL/Exchange服务器之间的机器时间差异...我已经排除了这种可能性。插入是通过存储过程执行的,它会在多个表中插入记录。所有这些表都具有下午4:20的时间戳。
此外,电子邮件包含一个不准确的ID,与记录没有在发送电子邮件时提交一致。
问题是,在SQL记录提交之前,SqlDataSource的OnInserted处理程序如何发送电子邮件?
protected void On_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
try
{
//GET THE RECORD ID
String RecordID = String.Empty;
RecordID = e.Command.Parameters["@RecordID"].Value != null ? e.Command.Parameters["@RecordID"].Value.ToString() : String.Empty;
//SEND THE EMAIL
SmtpClient smtp = new SmtpClient("SmtpHere",##);
MailMessage email = new MailMessage();
email.From = new MailAddress("FromAddressHere");
email.To.Add("ToAddressHere")
email.Subject = "Example Email";
email.Body = "The record #" + RecordID + " was just added.";
smtp.Send(email);
smtp = null;
email.Dispose();
//GO TO THE PAGE WITH THE NEW RECORD ID
HttpContext.Current.Response.Redirect("~/Page.aspx?RecordID=" + RecordID, false);
}
catch (Exception ex)
{
//HANDLE EXCEPTION
}
}