- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 OnInserted 处理程序的 SqlDataSource。处理程序发送一封电子邮件,其中包含从 Inserted 记录中收集的数据。包括它的 ID(输出参数)。
昨天,我收到处理程序发送的电子邮件,时间戳为下午 4:00。在 SQL 中提交的记录的时间戳之前 20 分钟。如果您认为这是 web/sql/exchange 服务器之间的机器时间差异……我已经排除了这种可能性。 Insert 由存储过程执行。它在几个表中插入记录。所有这些都有一个下午 4:20 的时间戳。
此外,电子邮件中包含的 ID 不准确。与发送电子邮件时未提交的记录一致。
问题是,SqlDataSource 的 OnInserted 处理程序发送的电子邮件怎么可能在 SQL 中提交记录之前发送?
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
}
}
最佳答案
我猜您的电子邮件代码(在 SqlDataSource.Inserted
事件中)没有检查 SqlDataSourceStatusEventArgs.AffectedRows
属性以确保实际插入了一行:
protected void SqlDataSource1_OnInserted(Object source, SqlDataSourceStatusEventArgs e)
{
if (e.AffectedRows > 0)
{
// Send e-mail
}
else
{
// For some reason, the insert didn't happen. Check for exceptions
string errorMessage = e.Exception.InnerException.Message;
// Here you want to display this error to the user, or log it, or something
}
}
所以我认为发生的事情是:
毫不奇怪,这种类型的错误可能会被忽视一段时间,因为您的插入可能很少会失败。
关于c# - SqlDataSource OnInserted 过早触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15411021/
我正在使用 2 个 ListView 并将项目从一个复制到另一个(使用下面的代码)但是当目标 ListView 的 onInsert 事件被触发时,传递的项目值始终为 nil 而不是新移动的列表项,有
我有一个带有 OnInserted 处理程序的 SqlDataSource。处理程序发送一封电子邮件,其中包含从 Inserted 记录中收集的数据。包括它的 ID(输出参数)。 昨天,我收到处理程序
我想在派生自 TCustomListBox 的自定义控件中引入一些新方法。 我想要的是一种在将项目添加/插入到列表框中时可以使用的方法,以及在从列表框中删除项目时使用的方法。 从哪里开始比较合适?我知
我是一名优秀的程序员,十分优秀!