ho avuto il seguente per le email, che ha lavorato:Un modulo asincrono o gestore completato durante un'operazione asincrona era ancora in corso
private SmtpClient _client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("[email protected]", "password"),
EnableSsl = true
};
public void DoThis(){
_client.Send("[email protected]", to.Email, "Subject", "Body");}
public void DoThat(){
_client.Send("[email protected]", to.Email, "Subject", "Body");}
Ma stava bloccando l'applicazione web fino a quando l'email è stata inviata, così ho deciso di provare a inviare in modo asincrono:
public void DoThis(){
var message = new MailMessage("[email protected]", to.Email, "Subject", "Body");
_client.SendAsync(message, null);
}
che posso vedere sempre trattati in modo asincrono se metto a punto, ma ho sempre il seguente:
An asynchronous module or handler completed while an asynchronous operation was still pending.
Cosa sto sbagliando?
Asincronia non modifica nulla del fatto che i processi a esecuzione prolungata non devono essere gestiti all'interno di IIS. Dovresti lanciarlo in una tabella delle attività e lasciare che un'attività ricorrente programmata o un servizio Windows lo raccolga. –
@RobVious Sto affrontando lo stesso problema. Sei riuscito a risolverlo? – Bitsian
@Bitsian sì, vedere la mia risposta sotto – RobVious