SmtpClient.SendAsync-Aufrufe werden automatisch abgebrochen

8

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 :

%Vor%

Hier ist mein Email_OnCompleted Delegierter:

%Vor%

Warum werden asynchrone E-Mails storniert, aber synchrone E-Mails werden problemlos verarbeitet? Könnte es sich um ein Entsorgungsproblem handeln?

    
Petrus Theron 29.11.2011, 19:48
quelle

1 Antwort

12

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?

    
Anders Abel 29.11.2011, 19:56
quelle