BackgroundWorker RunWorkerAsync在升级到.net 4.5后失败。异步问题

BackgroundWorker RunWorkerAsync在升级到.net 4.5后失败。异步问题,.net,backgroundworker,.net-4.5,async-await,.net,Backgroundworker,.net 4.5,Async Await,各位,朋友……我需要支援。在将.Net framework升级到4.5之前,我有一个功能完善的批量邮件系统。这是我尝试异步运行后台工作程序时得到的结果 此时无法启动异步操作。异步操作只能在异步处理程序或模块内启动,或在页面生命周期中的某些事件期间启动。如果在执行页面时发生此异常,请确保该页面标记为“方法” 每个异步调用都失败,包括我的send mail异步操作方法 mailSmtpClient.SendAsync(mailMessage, userState); 我尝试过一些概念,例如将我的网

各位,朋友……我需要支援。在将.Net framework升级到4.5之前,我有一个功能完善的批量邮件系统。这是我尝试异步运行后台工作程序时得到的结果

此时无法启动异步操作。异步操作只能在异步处理程序或模块内启动,或在页面生命周期中的某些事件期间启动。如果在执行页面时发生此异常,请确保该页面标记为“方法”

每个异步调用都失败,包括我的send mail异步操作方法

mailSmtpClient.SendAsync(mailMessage, userState);
我尝试过一些概念,例如将我的网络配置更改为如下:

  <appSettings>
    <add key="aspnet:AllowAsyncDuringSyncStages" value="false" />
  </appSettings>
当我尝试第二种方法时,它刷新了我的HttpContext并得到一个HttpContext异常

我的代码是一个基本的后台工作程序

public void startsending() {

   //Task.Factory.StartNew(() => bw.RunWorkerAsync()); fails
   bw.RunWorkerAsync();
   HttpContext.Current.Response.Buffer = true;
   HttpContext.Current.Response.Flush();  // send all buffered output to client
   HttpContext.Current.Response.End();
}

设置aspnet:AllowAsyncDuringSyncStages默认为false。尝试将其设置为true。

MVC或网页?什么调用
开始查找
?为什么要使用后台工作程序?我之所以使用后台工作程序,是因为它是以前.NET 4.0配置中的现有代码。我猜BW在4.5中完全被钉死了。我不得不用.NET4.5异步/等待功能重写整个类。它实际上工作得更好,疼痛更少。
public void startsending() {

   //Task.Factory.StartNew(() => bw.RunWorkerAsync()); fails
   bw.RunWorkerAsync();
   HttpContext.Current.Response.Buffer = true;
   HttpContext.Current.Response.Flush();  // send all buffered output to client
   HttpContext.Current.Response.End();
}