【问题标题】:How can I set Async="true" for all pages?如何为所有页面设置 Async="true"?
【发布时间】:2014-02-21 12:49:01
【问题描述】:

我正在使用 ASP.NET 异步发送电子邮件。 我注意到我必须在视图中设置“Async = true”。

母版页不支持此属性。如何为所有页面设置异步?

【问题讨论】:

标签: c# asp.net .net webforms


【解决方案1】:

您可以像这样在母版页中设置它。找到解决方案here

public abstract class MyBasePage : System.Web.UI.Page
{
    public MyBasePage()
    {
        this.AsyncMode = true;
    }
}

然后将aspx.cs文件中的继承改成这样:

public partial class WebForm1 : MyBasePage

当您在构造函数之外的任何其他内容中设置AsyncMode 属性时,它可能会破坏系统。

【讨论】:

  • 这是个好主意。奇怪的是,这个属性没有出现在 Visual Studio 的自动完成中。虽然它可以编译。
  • 好啊!他们将Browsable 设置为false,因为他们不想让你找到它。当您在构造函数之外的任何其他内容中设置它时,它可能会破坏系统。
【解决方案2】:

打开查找对话框并输入:

Find: @Page
Replace with: @Page Async="True"

单击全部替换按钮 :-D 据我了解,您不能只为所有内容自动执行此操作。它需要在每个页面上定义。

【讨论】:

  • 这是真的。 AsyncMode = true 实际上不允许异步使用(使用 RegisterAsyncTask)
【解决方案3】:

与其尝试在 ASP.NET 的页面代码中发送电子邮件,为什么不使用 AJAX?制作一个像登录表单一样响应 POST 的 ASPX 文件,当发布时,它会发送一封电子邮件。 AJAX 是异步的,您可以使用它在活动网页中显示进度。 AJAX 简介可以在这里找到:http://www.w3schools.com/ajax/default.asp

就我个人而言,我使用 jQuery 来完成我的 AJAX 工作。你可能想看看:http://jquery.com/

最后但并非最不重要的一点是,如果您不想“滚动自己的”代码来执行此操作,请查看像 Mandrill 这样的用于邮件传递的 Web API:http://mandrill.com/

【讨论】:

    【解决方案4】:

    包括 tpl 参考。 然后做 Task.Run(()=> Sendmailmethod()); 这是快速 n 整洁的火 n 忘记模式

    【讨论】:

    • 您真的不应该在 ASP.NET 应用程序中这样做。您的 AppDomain 可能会在您的 Sendmailmethod() 完成之前关闭。如果您使用的是 4.5.2 或更新版本,请改用 HostingEnvironment.QueueBackgroundWorkItem(() => Sendmailmethod()),这样 IIS 就会知道您有一个后台任务正在运行。如果您不在 4.5.2 上,请阅读 this blog post 了解有关 QBWI 和 ASP.NET 的其他“即发即弃”选项的更多信息。
    • U r rite scott,但 appdomain 关闭是一个远程事件,当 Task.run 在正常关闭时产生时 IIS 仍然知道。相信我已经尝试过 n 测试
    【解决方案5】:

    如果您的页面没有代码隐藏,则可以使用此策略。

    namespace com.mystuff
    {
     public class MyPage: System.Web.UI.Page
     {
        public MyBasePage()
         {
             this.AsyncMode = true;
         }
     }
    }
    
    <system.web>
       <pages pageBaseType="com.mystuff.MyPage" />
    </system.web>
    

    更多信息 https://msdn.microsoft.com/en-us/library/system.web.configuration.pagessection.pagebasetype(v=vs.110).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 2017-03-19
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多