我在asp.net WebApi操作中添加了以下行(完全按照原样,所以您也可以尝试):
new SmtpClient { DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory}.SendMailAsync("a@test.com", "b@test.com", "s", "b");它导致操作等待几秒钟,直到抛出An asynchronous module or handler completed while an asynchronous operation was still pending.的500个错误,asp.net才清楚地检测到有一个异步任务正在运行。
但当我加上
Task.Delay(10000);操作立即完成。为什么asp.net在这里没有检测到有一个异步任务在运行?
发布于 2017-07-30 15:55:43
SmtpClient.SendAsync有带ExternalThreading标志的HostProtectionAttribute。这表示ASP.NET将涉及新的线程,因此ASP.NET开始对这些操作进行计数以等待完成。
如果需要在WebForms中使用异步方法,则应该使用RegisterAsyncTask方法。
https://stackoverflow.com/questions/45401407
复制相似问题