在Web.config中配置超时后,使用SMTP发送邮件时,线程正在中止



我正在尝试通过网站发送邮件;邮件已成功发送,但仍被抛出:

线程正在中止

这是C#代码:

try
{
    MailAddress mailFrom = new MailAddress("info@mydomain.org");
    MailAddress mailTo = new MailAddress("mygmailid@gmail.com");
    MailMessage MainMessage = new MailMessage(mailFrom, mailTo);
    MainMessage.Subject = "BloggersFolder: Answer received";
    MainMessage.CC.Add("anothergmailid@gmail.com");
    MainMessage.Priority = MailPriority.High;
    MainMessage.Body = "Hello - this is body message";
    SmtpClient smtpclient = new SmtpClient("relay-hosting.secureserver.net", 25);
    smtpclient.UseDefaultCredentials = false;
    smtpclient.Credentials = new NetworkCredential("info@mydomain.org", "mypassword");
    smtpclient.Send(MainMessage);
    Response.Redirect("~/thank-you.aspx?page=answer");
}
catch (Exception ex)
{
    string strg = ex.Message.ToString();
    Response.Redirect("~/thank-you.aspx?page="+ strg);
    ex = null;
}

我已经配置了HTTP超时(在其他地方找到了解决方案(,仍然抛出了错误。

web.config

<system.web>
    <compilation debug="true" targetFramework="4.0"/>
    <httpRuntime executionTimeout = "60"/>
</system.web>

您需要将Response.Redirect更改为中止线程 - 使用以下内容:

Response.Redirect("~/thank-you.aspx?page=answer", false);

使用第二个参数false,不会中止运行线程,并且不会发生ThreadAbortException ...

最新更新