在没有某些需要的情况下 ASP.Net 页面上使用 Async= "true"可能存在的问题



例如,我在Global中有一些异常处理代码。我调用SmtpClient的SendAsync()方法来通知自己错误。

如果某个页面的Async属性为"false",则我没有收到信件。所以,要解决它,我必须设置Async="true"在我的ASP的每一页。. NET WebForms应用程序?有什么问题吗?

Async="true"只需要在我的应用程序中发送电子邮件。

详情见;在ASP中实现重复出现的后台任务的危险。净

有三个主要的风险,我将在这篇博客中重点讨论其中一个职位。

1-与请求无关的线程中未处理的异常将使进程关闭。即使您有处理程序,也会发生这种情况通过Application_Error方法设置。我会试着解释为什么后续的博客文章,但这很容易处理。

2-如果你在Web Farm中运行你的站点,你可能会以你的应用程序的多个实例而告终,这些实例都试图在Web Farm中运行相同的任务同样的时间。比第一项更难处理,但也不要太用力。一种典型的方法是使用资源公用于所有服务器,如数据库,作为同步协调任务的机制。

3-你的网站运行的AppDomain可能会因为一些原因而宕机,你的后台任务也会随之宕机。这会导致腐败数据,如果它发生在你的代码执行中间。

最新更新