Immer wenn ich smtpClient.SendAsync(...)
von meiner ASP.NET MVC-Anwendung aus anrufe, werden die asynchronen Anfragen automatisch abgebrochen, obwohl SendAsyncCancel()
niemals aufgerufen wird.
synchrone .Send(...)
-Anforderungen gehen andererseits gut durch.
My EmailService
service wrapper behandelt das Senden von asynchroner E-Mail mit SmtpClient
aus meiner ASP.NET MVC 3-Anwendung heraus. Eine Serviceinstanz wird von StructureMap in jeden MVC-Controller eingefügt, wodurch eine neue SmtpClient
-Instanz in eine using (...) { }
-Anweisung eingeschlossen wird.
Hier ist meine EmailService.SendAsync
-Wrapper-Methode für SmtpClient
:
Hier ist mein Email_OnCompleted
Delegierter:
Warum werden asynchrone E-Mails storniert, aber synchrone E-Mails werden problemlos verarbeitet? Könnte es sich um ein Entsorgungsproblem handeln?
Es kann definitiv ein Problem mit der Entsorgung sein. Wenn Sie den Client entsorgen, werden alle ausstehenden asynchronen Vorgänge abgebrochen.
Sie sollten den Client in Email_OnCompleted
ablegen.
Ein SO-Post zu dem Punkt, an dem zu disponieren ist: SmtpClient in SendComplete ablegen?
Tags und Links asp.net-mvc asp.net asynchronous smtpclient smtp