在没有一定需要的情况下在 ASP.Net 页面上使用 Async="true" 可能出现的问题
Posted
技术标签:
【中文标题】在没有一定需要的情况下在 ASP.Net 页面上使用 Async="true" 可能出现的问题【英文标题】:Possible problems with using Async="true" on ASP.Net Page without certain need 【发布时间】:2013-05-29 12:49:34 【问题描述】:例如,我在 Global.asax 中有一些异常处理代码,在这里我调用 SmtpClient 的 SendAsync() 方法来通知自己错误。
如果某个页面的 Async 属性为“false”,我不会收到任何信件。那么,要修复它,我是否必须在我的 ASP.NET WebForms 应用程序的每个页面上设置 Async="true" ?我可以在这里遇到任何问题吗?
只有在我的应用程序中发送电子邮件时才需要 Async="true"。
如果有任何帮助,我将不胜感激......
【问题讨论】:
【参考方案1】:请在以下位置查看完整帖子; The Dangers of Implementing Recurring Background Tasks In ASP.NET
存在三个主要风险,我将在本博客中重点介绍其中一个 发帖。
1- 与请求无关的线程中未处理的异常将导致进程停止。即使您有处理程序也会发生这种情况 通过 Application_Error 方法设置。我将尝试解释为什么 后续博客文章,但这很容易处理。
2- 如果您在 Web Farm 中运行您的网站,您最终可能会得到应用程序的多个实例,它们都尝试在 同时。比第一项更具挑战性, 但仍然不太难。一种典型的方法是使用资源 对所有服务器(例如数据库)通用,作为同步 协调任务的机制。
3- 运行您的网站的 AppDomain 可能因多种原因而关闭,并导致您的后台任务随之中断。这可能会损坏 如果它发生在你的代码执行过程中的数据。
【讨论】:
以上是关于在没有一定需要的情况下在 ASP.Net 页面上使用 Async="true" 可能出现的问题的主要内容,如果未能解决你的问题,请参考以下文章
在没有npm的情况下在ASP.NET MVC 5中生成javascript包
如何在没有 Flash 的情况下在 Firefox 中实现复制到剪贴板。需要实施[重复]