4

For example, I have some exception processing code in Global.asax, where I call the SendAsync() method of SmtpClient to notify myself about the error.

If the Async property of the certain page is "false", I receive no letter. So, to fix it, do I have to set Async="true" on EVERY page of my ASP.NET WebForms application? Can I get any problems here?

Async="true" is needed only for email sending in my application.

I will be grateful for any help...

4

1 回答 1

0

请在以下位置查看完整帖子; 在 ASP.NET 中实现重复后台任务的危险

存在三个主要风险,我将在这篇博文中重点介绍其中之一。

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

2- 如果您在 Web Farm 中运行您的网站,您最终可能会遇到多个应用程序实例,它们都尝试同时运行相同的任务。比第一项更具挑战性,但仍然不是太难。一种典型的方法是使用所有服务器共有的资源,例如数据库,作为协调任务的同步机制。

3- 您的站点运行的 AppDomain 可能由于多种原因而关闭,并使用它取消您的后台任务。如果发生在代码执行过程中,这可能会损坏数据。

于 2015-03-13T14:33:06.060 回答