如何为所有页面设置 Async= "true"?



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

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

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

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

然后将 aspx.cs 文件中的继承更改为如下所示的内容:

public partial class WebForm1 : MyBasePage

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

打开查找对话框并输入:

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

单击全部替换按钮:-D 据我了解,你不能对所有事情都自动这样做。 它需要在每一页上定义。

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

就个人而言,我使用jQuery来完成我的AJAX工作。 您可能想检查一下:http://jquery.com/

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

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

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

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

最新更新