Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设置Async=";“真的”;所有页面?_C#_Asp.net_.net_Webforms - Fatal编程技术网

C# 如何设置Async=";“真的”;所有页面?

C# 如何设置Async=";“真的”;所有页面?,c#,asp.net,.net,webforms,C#,Asp.net,.net,Webforms,我正在使用ASP.NET异步发送电子邮件。 我注意到我必须在视图中设置“Async=true” 母版页不支持此属性。如何为所有页面设置异步?打开“查找”对话框并输入: Find: @Page Replace with: @Page Async="True" 单击“全部替换”按钮:-D据我所知,您不能对所有内容都自动执行该操作。需要在每个页面上定义它。您可以在母版页中这样设置它。找到的解决方案: 然后将aspx.cs文件中的继承更改为如下内容: public partial class WebF

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


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

打开“查找”对话框并输入:

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

单击“全部替换”按钮:-D据我所知,您不能对所有内容都自动执行该操作。需要在每个页面上定义它。

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

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

public partial class WebForm1 : MyBasePage

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

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

就个人而言,我使用jQuery来完成AJAX工作。您可能想查看它:

最后但并非最不重要的一点是,如果您不想“滚动您自己的”代码来实现这一点,请查看用于邮件传递的Web API,如Mandrill:

包含tpl引用。 那就做吧 运行(()=>Sendmailmethod());
这是quick n neat fire n forget模式

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

namespace com.mystuff
{
 public class MyPage: System.Web.UI.Page
 {
    public MyBasePage()
     {
         this.AsyncMode = true;
     }
 }
}

<system.web>
   <pages pageBaseType="com.mystuff.MyPage" />
</system.web>
namespace com.mystuff
{
公共类MyPage:System.Web.UI.Page
{
公共MyBasePage()
{
this.AsyncMode=true;
}
}
}
更多信息

请注意,在ASP.NET中,很难让人忘记后台工作。你可能走的不是一条好路。看。辅助进程随时都可能死亡。那么你的背景工作就丢了。解释一些在ASP.NET中进行后台工作的正确方法,这是一个好主意。奇怪的是,这个属性没有出现在VisualStudio中的自动完成中。尽管它是编译的,不错吧!他们将
Browsable
设置为
false
,因为他们不想让您找到它。当你在构造函数之外的任何地方设置它时,它会破坏系统。你真的不应该在ASP.NET应用程序中这样做。在
Sendmailmethod()
完成之前,您的AppDomain可能会关闭。如果您使用的是4.5.2或更高版本,请改用
HostingEnvironment.QueueBackgroundWorkItem(()=>Sendmailmethod())
,以便IIS知道您正在运行后台任务。如果您不在4.5.2.0上,请阅读有关QBWI和ASP.NET的其他“启动并忘记”选项的详细信息。但是appdomain关闭是一个远程事件,IIS仍然知道Task.run何时在正常关闭中生成。请相信我已尝试并测试过这是真的。AsyncMode=true实际上不允许异步使用(与RegisterAsyncTask一起使用)
namespace com.mystuff
{
 public class MyPage: System.Web.UI.Page
 {
    public MyBasePage()
     {
         this.AsyncMode = true;
     }
 }
}

<system.web>
   <pages pageBaseType="com.mystuff.MyPage" />
</system.web>