0
我有一個PasswordRecovery
控件,它的行爲需要修改。當觸發SendingMail
事件時,將調用事件處理程序。在事件處理程序中,我定義了將MailMessage
寫入隊列(稍後處理)的行爲。到現在爲止還挺好。問題是該事件繼續,並嘗試使用內置方法LoginUtil.SendPasswordMail
。這需要smtp服務器信息,我不想提供(因爲它會違反我們的應用程序的設計)。在.NET PasswordRecovery控制中停止傳播SendingMail事件
這裏的事件處理程序:
protected void vendorWebPasswordRecovery_SendingMail(object sender, MailMessageEventArgs e)
{
string userName = this.vendorWebPasswordRecovery.UserName;
try
{
MailMessage emailMessage = e.Message;
var messageData = new Dictionary<string, string>();
messageData.Add("toEmail", emailMessage.To[0].ToString());
messageData.Add("subject", emailMessage.Subject + " from the queue!");
messageData.Add("body", emailMessage.Body);
//Write the message out to the queue
SendPasswordResetEmail(messageData, userName);
}
catch (Exception ex)
{
LoggingHandler.Write("MailMessageEventArgs did not contain expected data: - " + ex.Message, LogCategoryType.Verbose, TraceEventType.Verbose, 1, ex);
}
//Compilation error: "MailMessageEventArgs doesn't contain a definition for 'Handled'"
e.Handled = true;
}
我如何阻止繼續就和調用內置方法的事件?我試圖設置MailMessageEventArgs
來處理,但這是一個編譯錯誤。這甚至是正確的方法嗎?
你嘗試e.Cancel代替e.Handled?在這裏示例:http://scottonwriting.net/sowblog/archive/2009/11/10/163371.aspx – gbs
我做了,它的工作完美。如果你想把它放在答案中,我會把它標記爲:] – Zach