0
添加以下行(恰好原樣,所以你可以嘗試它太)到一個asp.net的WebAPI動作:爲什麼SendMailAsync會導致asp.net等待,而Task.Delay不會呢?
new SmtpClient { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory}.SendMailAsync("[email protected]", "[email protected]", "s", "b");
,並導致該操作需要等待幾秒鐘,直到拋出一個500錯誤An asynchronous module or handler completed while an asynchronous operation was still pending.
很明顯,asp.net檢測到有一個異步任務正在運行。
然而,當我加
Task.Delay(10000);
馬上行動完成。爲什麼asp.net在這裏沒有檢測到有一個異步任務正在運行?
謝謝。如果我想調用SendMailAsync,但我不希望WebApi操作等到電子郵件發送時纔會這樣做?我也不想通過調用Task.Run來綁定一個線程。 – wezten
你可以看看像這樣的帖子https://stackoverflow.com/questions/36335345/web-api-fire-and-forget火和遺忘並不是一個很好的建議在網上。如果需要,WebServer可能會終止您的進程。 – hardkoded